GOF23設計模式之適配器模式
阿新 • • 發佈:2019-03-11
truct static osi quest reader 需要 松耦合 xtend 不兼容
GOF23設計模式之適配器模式
結構型模式:
核心作用:是從程序的結構上實現松耦合,從而可以擴大整體的類結構,用來解決更大的問題。
分類:適配器模式、代理模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式
什麽是適配器模式?
將一個類的接口轉換成客戶希望的另一個接口。Adapter 模式使得原本由於接口不兼容而不能一起工作的那些類可以在一起工作。
模式中的角色
目標接口(Target):客戶所期待的接口。目標可以是具體的或抽象的類,也可以是接口。
需要適配的類(Adaptee):需要適配的類或適配者類。
適配器(Adapter):通過包裝一個需要適配的對象,把原接口轉換成目標接口。
package cn.taosir.design.structure.adapter; public class AdapterDemo { public void test(Target t) {t.handleReq();} public static void main(String[] args) { AdapterDemo ad=new AdapterDemo(); Adaptee adaptee=new Adaptee(); //類適配器方式 //Target t=new Adapter();//對象適配器方式 Target t=new Adapter2(adaptee); ad.test(t); } } /** * 被適配的類 */ class Adaptee{ public void request() {System.out.println("可以完成客戶請求的需要的功能!");} } interface Target{ void handleReq(); } /** * 適配器(類適配器方式) */ class Adapter extends Adaptee implementsTarget{ @Override public void handleReq() { super.request(); } } /** * 適配器(對象適配器方式) */ class Adapter2 implements Target{ private Adaptee adaptee; @Override public void handleReq() { adaptee.request(); } public Adapter2(Adaptee adaptee) { super(); this.adaptee=adaptee; } }
工作中的場景
1)經常用來做舊系統改造和升級
2)如果我們的系統開發之後再也不需要維護,那麽很多模式都是沒必要的,但是不幸的是,事實卻是維護一個系統的代價往往是開發一個系統的數倍。
我們學習中見過的場景
1)java.io.InputStreamReader(InputStream)
2)java.io.OutputStreamWriter(OutputStream)
GOF23設計模式之適配器模式