1.不適用介面卡
/**
* 航行
*/public
class
hangxing
}
/**
* 划槳
*/public
class
huajiang
}
/**
* 只會說啟航並不划槳的老船長
*/public
class
chuanzhang
/** * 開始冒險
*/public
void
startadventures()
}
//小明船長按照慣例揚帆起航,而船卻紋絲不動。。。
system.out.
println
("-------笨蛋小明-------");
chuanzhang xiaoming =
newchuanzhang
(new
hangxing()
);xiaoming.
startadventures()
;
2.使用介面卡public
class
hangxingadapter
extends
hangxing
/** * 違反了黎克特制替換原則(子類最好不要重寫父類方法)
* 所以使用介面卡模式是不得已才使用的(可能是原來的類結構沒設計好或要適配第三方的介面/類)
*/@override
public
void
sail()
}
// 小紅很聰明,僱傭了hangxingadapter來驅動huajiang來划槳
chuanzhang xiaohong =
newchuanzhang
(new
hangxingadapter()
);xiaohong.
startadventures()
;
3.總結
介面卡模式是不得已才使用的(可能是原來的類結構沒設計好或要適配第三方的介面/類),比如上例chuanzhang類的設計初衷可能就是僅僅會喊楊帆起航而已,但後來由於需求的修改在某些地方chuanzhang也能划槳,也無法直接修改原來的類,這時的最佳實踐就是使用是介面卡模式。
設計模式 介面卡模式 類介面卡 物件介面卡
乙個小例子,便於理解,上 這是我們造的。現在想用這個方法。public class adaptee 類介面卡。對我們想要的方法封裝一下,target就能像之前一樣,呼叫request方法即可。public class adapter1 extends adaptee implements targe...
設計模式之介面卡模式(類介面卡模式)
介面卡模式,即定義乙個包裝類,用於包裝不相容介面的物件 包裝類 介面卡adapter 被包裝物件 適配者adaptee 被適配的類 把乙個類的介面變換成客戶端所期待的另一種介面,從而使原本介面不匹配而無法一起工作的兩個類能夠在一起工作。介面卡模式的形式分為 類的介面卡模式和物件的介面卡模式 模式原理...
設計模式 介面卡模式
01 02 author rollen holt 設計模式之 介面卡模式 03 04 05 inte ce window 11 12 abstract class windowadapter 16 public void close 19 public void activated 22 publi...