适配器模式(Adapter模式)
生活随笔
收集整理的這篇文章主要介紹了
适配器模式(Adapter模式)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
將一個類的接口轉換為客戶希望的另外一個接口
適配器分為類適配器模式和對象適配器模式(前者應用較少)
適配器模式中主要包括三個角色:
(1)目標接口 :當前系統業務所期待的接口
(2)適配者類:現存的接口
(3)適配器類:轉換器,將適配者接口轉化為目標接口
其實是舊的接口希望通過適配器類,實現適配者類中的功能,成為一個新的接口
舊的接口,沒有適配者中的功能(只有request方法)
新的接口,有適配者中的功能(千方百計想能夠調用specificRequest方法)
?1.類適配器模式實現:
?
//目標接口 interface Target {public void request(); } //適配者類 class Adaptee {public void specificRequest(){ System.out.println("適配者中的業務代碼被調用!");} } //適配器類 //適配器類繼承適配者類,而且實現目標接口(這意味著適配器類需要實現目標接口里的request方法) //再加上繼承適配者類,所以適配器類中有兩個方法:request方法和specificRequest方法 class ClassAdapter extends Adaptee implements Target {public void request(){specificRequest();} } //客戶端代碼 public class ClassAdapterTest {public static void main(String[] args){System.out.println("類適配器模式測試:");Target target = new ClassAdapter();//此時Target接口就不止一個request方法了,而是和適配器類一樣也有//request和specificRequest兩個方法了target.request();} }2.對象適配器模式
?
Adapter適配器類實現了舊目標接口,所以必須重寫request函數
Adapter適配器雖然只有request函數,但是它的request函數里調用了一個適配者類對象的specificRequest方法,所以還是可以調用適配者類中的specificRequest方法
?
//目標接口 interface Target {public void request(); } //適配者接口 class Adaptee {public void specificRequest(){ System.out.println("適配者中的業務代碼被調用!");} } //適配器類 class Adapter implements Target {private Adaptee adaptee;public Adapter(Adaptee adaptee){this.adaptee=adaptee;}public void request(){adaptee.specificRequest();} } //客戶端代碼 public class Test {public static void main(String[] args){System.out.println("對象適配器模式測試:");Adaptee adaptee = new Adaptee();Target target = new Adapter(adaptee);target.request();} }?簡潔版:
? //目標接口 interface Target {public void request(); } //適配者接口 class Adaptee {public void specificRequest(){ System.out.println("適配者中的業務代碼被調用!");} } //適配器類 class Adapter implements Target {public void request(){核心這句,在request函數里面調用一個適配者類對象的specificRequest方法adaptee.specificRequest();} } //客戶端代碼 public class Test {public static void main(String[] args){Adaptee adaptee = new Adaptee();Target target = new Adapter(adaptee);target.request();} }?總結
以上是生活随笔為你收集整理的适配器模式(Adapter模式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于BP神经网络的数字识别
- 下一篇: 【原创】 互联网大事记-开章