適配器模式將一個(gè)類的接口,轉(zhuǎn)換成客戶期望的另一個(gè)接口粟矿。適配器讓原本接口不兼容的類可以合作無間凰棉。
外觀模式提供了一個(gè)統(tǒng)一的接口,用來訪問子系統(tǒng)中的一群接口陌粹。外觀定義了一個(gè)高層接口撒犀,讓子系統(tǒng)更容易使用。
實(shí)例解析:
現(xiàn)有兩種動(dòng)物掏秩,鴨子和火雞或舞。各種鴨子通過 Duck 接口實(shí)現(xiàn),各種火雞通過 Turkey 接口實(shí)現(xiàn)哗讥。那么如何使用 Duck 接口來實(shí)現(xiàn)一只火雞呢嚷那。
類圖
//主函數(shù)代碼
public class DuckTestDrive {
public static void main(String[] args) {
//鴨子
DuckOne duckOne = new DuckOne();
duckOne.quack();
duckOne.fly();
//火雞
TurkeyOne turkeyOne = new TurkeyOne();
turkeyOne.gobble();
turkeyOne.fly();
//直接用Duck接口,顯然不合適杆煞,寫個(gè)適配器就好了魏宽。
TurkeyOne turkeyTwo = new TurkeyOne();
TurkeyAdapter turkeyAdapter = new TurkeyAdapter(turkeyTwo);
turkeyAdapter.quack();
turkeyAdapter.fly();
}
}
外觀模式:
外觀模式比較簡(jiǎn)單,不再用代碼進(jìn)行說明决乎。
外觀模式
'適配器模式的意圖是队询,“改變”接口符合客戶的期望。而外觀模式的意圖是构诚,提供子系統(tǒng)的一個(gè)簡(jiǎn)化接口蚌斩。'
設(shè)計(jì)原則
- 最少知識(shí)原則:只和你的密友談話。
即:當(dāng)你正在設(shè)計(jì)一個(gè)系統(tǒng)范嘱,不管是任何對(duì)象送膳,你都要注意它所交互的類有哪些,并注意它和這些類是如何交互的丑蛤。不要讓太多的類耦合在一起叠聋。
以下要點(diǎn)可幫助避免違反此原則:
就任何對(duì)象而言,在該對(duì)象的方法內(nèi)受裹,我們只應(yīng)該調(diào)用屬于以下范圍的方法:
- 該對(duì)象本身碌补;
- 被當(dāng)做方法的參數(shù)而傳遞進(jìn)來的對(duì)象;
- 此方法所創(chuàng)建或?qū)嵗娜魏螌?duì)象棉饶;
- 對(duì)象的任何組件厦章。
最少知識(shí)原則