介面卡模式:將乙個類的介面,轉換成客戶期待的另乙個介面,介面卡讓原本介面不相容的類可以合作無間。
外觀模式:提供了乙個統一的介面,用來訪問子系統中的一群介面。外觀定義了乙個高層介面,讓子系統更容易使用。
外觀模式白話:開啟電視,你要插電源,再按下遙控的「開」鍵,同時為了你要由音量,也要把音量鍵「開」按一下,然而外觀模式就是定義了乙個a介面來封裝這些操作的bcd介面,只要按下a介面,就可以啟動bcd介面,而不用說乙個b,乙個c,乙個d的介面按。最少知識原則:只和你的密友談話。
這就是說,當你正在設計乙個系統,不管任何物件,你都要注意它所互動的類有哪些,並注意他和這些類是如何互動的。這個原則希望我們在設計中,不要讓太多的類耦合在一起,免得修改系統的一部分,會影響到其他部分,降低維護成本。
這裡有鴨子類,火雞類,我們實現了乙個火雞介面卡,當火雞可以扮演鴨子類的操作
1、鴨子類
package com.oyhp.duck;
//鴨子介面
public inte***ce duck
package com.oyhp.duck;
//綠頭鴨
public class mallardduck implements duck
@override
public void fly()
}
2、火雞類
package com.oyhp.turkey;
//街頭玩禽-火雞
public inte***ce turkey
package com.oyhp.turkey;
public class wildturkey implements turkey
@override
public void fly()
}
3、獲取介面卡
package com.oyhp.adapter;
import com.oyhp.duck.duck;
import com.oyhp.turkey.turkey;
//火雞介面卡
public class turkeyadaper implements duck
@override
public void quack()
@override
public void fly()
}}
4、測試
package com.oyhp.test;
import com.oyhp.adapter.turkeyadaper;
import com.oyhp.duck.duck;
import com.oyhp.duck.mallardduck;
import com.oyhp.turkey.wildturkey;
/** *
* @author oyhp
* 客戶使用介面卡的過程如下:
* 1、客戶通過目標介面呼叫介面卡的方法對介面卡發出請求
* 2、介面卡使用被適配者介面把請求轉換成被適配者的乙個或多個呼叫介面
* 3、客戶收到呼叫的結果,但並未察覺這一切是介面卡在起轉換作用
1、本章沒有實現外觀模式的**,自己可以看懂白話就好,因為我在寫**的過程中,無形的就已經在使用外觀模式了。
2、外觀不只是簡化了介面,也將客戶從元件的子系統中解耦。
3、外觀模式和介面卡可以包裝許多類,但是外觀的意圖是簡化介面而介面卡的意圖是將介面轉換成不同介面
設計模式 介面卡模式與外觀模式
2015年1月31日21 00 07 說實話我覺得介面卡模式和外觀模式就是乙個意思,區別就在於使用初衷。另外介面卡模式和裝飾者模式很像,根據需要自己選擇使用那一種。介面卡模式的本質是對被適配的乙個或者多個類進行包裝以提供乙個目標格式的介面,對於呼叫者來說,被適配者的呼叫過程是透明的。介面卡模式是為了...
介面卡模式與外觀模式
客戶新的需求,需要我們實現類似歐洲插座 電流介面卡 美國產筆記本插頭的東西,如下所示 使用介面卡模式充滿良好的oo設計原則 使用物件組合,以修改的介面包裝被適配者 同時被適配者的任何子類,都可以配著介面卡使用。需要注意 該模式是如何把客戶和介面繫結,而不是和實現繫結。上圖是物件介面卡,物件介面卡利用...
介面卡模式與外觀模式
定義 介面卡模式將乙個類的介面,轉換為客戶希望另乙個介面。外觀模式 外觀模式提供了乙個統一的介面,用來訪問子系統中一群介面。要點 當需要使用乙個類而其介面不符合你的需求的時候,使用介面卡。當需要簡化並統一乙個很大的介面或一群負責的介面時,使用外觀。介面卡可以改變介面以符合客戶的期望。外觀將客戶從乙個...