介面卡模式
所謂介面卡模式,將乙個類的介面,轉換為客戶所期望的另乙個介面。介面卡讓原本介面不相容的類可以合作無間。
介面卡主要組成包括:
目標介面
介面卡:這個主要就是將被介面卡轉換為目標介面,一般要實現目標介面,且包含被配飾器成員
被介面卡:也就是用來改造的,提供給介面卡來轉換的,通常要將該被介面卡繫結傳入到介面卡中,讓介面卡得以轉換。
一般這種模式就是在不修改現有**的情況下,將乙個介面轉換為另乙個介面。它主要包含兩種方式:
物件介面卡:
這種就是在介面卡中利用了組合來處理,將被介面卡作為介面卡的乙個成員屬性,而且介面卡則就實現或者繼承客戶所需要的目標介面
**例項:
假如有乙個小狗和小貓的兩個介面,現在客戶需要小貓,可是只有小狗介面,則就可以利用介面卡來轉換。
這裡只寫出介面卡**:
package test;
public
class animaladapter
implements cat
public
void mimi()
public
void run()
public
void sleep()
}
外觀模式
所謂外觀模式,就是提供乙個統一介面,用來訪問子系統中的一群介面。它定義了乙個高層介面,讓子系統更容易使用。
外觀模式並沒有封裝了子系統的類,外觀只是提供了更簡化的介面
,它裡面仍然包含著子系統中各個介面的物件,並且利用組合將子系統的所有介面來包含起來
。它不僅提供了乙個簡化介面,而且依然將系統完整的功能暴露出來。
**例項:
假設你要回家,回家進入屋裡有各種各樣的操作,此時就可以將這一系列操作看著乙個子系統。可以簡化該所有操作。
外觀模式
package test;
import com.whut.command.light;
public
class facede
}
介面卡模式將乙個或者多個類介面變成客戶所期望的介面,並不是轉換乙個介面。
外觀模式也可以只針對乙個擁有複雜介面的類提供簡化的介面。
介面卡模式設計的意圖主要就是讓現有介面改變成符合顧客所期望的介面
外觀模式的意圖就是將乙個複雜的子系統的所有介面簡化,以提供乙個便利方便的介面來給客戶
設計模式原則:
最少知識原則,減少物件之間的互動,只留下幾個「密友」。
要想遵循這個原則一般我們應該只呼叫屬於以下範圍的方法:
1 該物件的本身
2 被當做方法的引數而傳遞進來的物件
3 此方法所建立或例項化的任何物件
4 物件的任何元件,即該物件內部的所有成員變數或者方法
不要呼叫當某物件是呼叫其他方法後返回的結果。
兩個模式總結:
1)當需要使用乙個現有的類但是其介面並不符合你的需要時,可以用介面卡模式
2)當需要簡化並且統一乙個很大的介面或者一群複雜的介面時候
3)介面卡改變介面以使其符合客戶的期望
4)外觀將客戶從乙個複雜的子系統中解耦
5)介面卡將乙個物件包裝起來以改變其介面。
裝飾者將乙個物件包裝起來用來增加新的行為和責任。外觀將一群物件包裝起來以簡化其介面。
JAVA設計模式之介面卡模式
先總結一下整個過程的感想 感覺在網上找了很多資料,大部分大牛們把這個設計模式解釋的很仔細,但是用詞實在過於專業,很難讓初學者讀懂,自己找了乙個比較恰當的例子寫了一遍,對這個設計模式有了一定的認識,希望這種解釋可以得到認可。其實總結一下介面卡模式的最終目的 在乙個沒有實現某個介面的類,想在這個介面中規...
Java設計模式之介面卡模式
1 使用場景 介面卡模式把乙個類的介面變換成客戶端所期待的另一種介面。以消除由於介面的不匹配所造成類的相容性問題。介面卡模式主要有類的介面卡模式 物件的介面卡模式兩種。2 兩種介面卡模式介紹 模式所涉及的角色有 目標 target 角色 這就是所期待得到的介面。源 adapee 角色 現在需要適配的...
Java設計模式之介面卡模式
介面卡就是一種適配中介軟體,它存在於不匹配的二者之間,用於連線二者,將不匹配變得匹配,簡單點理解就是平常所見的轉接頭,轉換器之類的存在。介面卡模式有兩種 類介面卡和物件介面卡 二者在實現上有些許區別,作用一樣。1 類介面卡模式 原理 通過繼承來實現介面卡功能。當我們要訪問的介面a中沒有我們想要的方法...