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