您好,登錄后才能下訂單哦!
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)不同的類
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。