圖解設計模式之Adapter模式
阿新 • • 發佈:2018-07-14
區別 todo super() 行處理 tor weak 其他 什麽 show 什麽是Adapter模式
Adapter模式即適配器模式,對於適配器的理解參考現實生活中把交流電轉換成直流電的電源適配器,用於填補現有的程序和所需的程序之間差異的設計模式就是Adapter模式,有以下兩種實現方式:
1. 類適配器模式(使用繼承的適配器)
2. 對象適配器模式(使用委托的適配器)
所謂繼承和委托的區別在哪呢?委托是指將某個方法中的實際處理交給其他實例的方法,繼承則是自己進行處理,下面分別看下兩種實現方式:
代碼清單
這裏有一個需要被適配的Banner類
/** * 被適配角色:交流100福特電源 * @author guozhenZhao * @date 2018年6月21日 */ public class Banner { private String string; public Banner(String string) { super(); this.string = string; } public void showWithParen() { System.out.println("("+ string +")"); } public void showWithAster() { System.out.println("*"+ string +"*"); } }
還有一個接口和一個抽象類
public interface Print {
public abstract void printWeak();
public abstract void printStrong();
}
public abstract class PrintTwo {
public abstract void printWeak();
public abstract void printStrong();
}
下面看一下兩種方式的區別:
1. 使用繼承的適配器
/** * 使用繼承的適配器 * @author guozhenZhao * @date 2018年6月20日 */ public class PrintBanner extends Banner implements Print { public PrintBanner(String string) { super(string); // TODO Auto-generated constructor stub } @Override public void printWeak() { // TODO Auto-generated method stub showWithParen(); } @Override public void printStrong() { // TODO Auto-generated method stub showWithAster(); } }
2.使用委托的適配器
/** * 使用委托的適配器 * @author guozhenZhao * @date 2018年6月21日 */ public class PrintBannerTwo extends PrintTwo { private Banner banner; public PrintBannerTwo(String string) { super(); this.banner = new Banner(string); } @Override public void printWeak() { // TODO Auto-generated method stub banner.showWithParen(); } @Override public void printStrong() { // TODO Auto-generated method stub banner.showWithAster(); } }
當PrintBanner類的printWeak方法被調用時,並不是PrintBanner類自己進行處理,而是交給了其他類的實例的某些方法
什麽時候使用適配器模式呢
有一些現有的類可以被我們重復使用時,我們可以使用適配器將這些類作為組件重復利用,另外適配器模式用於連接接口(API)不同的類
圖解設計模式之Adapter模式