[size=large]
設計模式3
介面卡模式
介面卡模式就是將兩個不相容的類糾合在一起使用,它需要有被適配者和介面卡兩個身份,由於介面卡類是源的乙個子類,因此可以在介面卡中置換掉源的一些方法。
例如windows作業系統中的快捷方式,其實就是乙個介面卡的例子。
下面關於介面卡模式的應用
先定義乙個介面
public inte***ce operation
operation 類為被適配者,在這個介面中宣告了多個方法,每個方法提供不同的功能;當我們需要實現這個類的時候、必須全部實現這個介面中的全部方法。對於使用者而言如果實現operation介面中的某個或某幾個方法時,其他的方法也必須同時給出實現。
public abstract class adapter implements operation
public void closed(){}
public void closing(){}
public void deactivated(){}
public void deiconified(){}
public void incoified(){}
public void iconified(){}
public void opened(){}
}adapter 類實現了operation介面,在adapter類中、給出了operation介面中的全部方法實現;給出這些實現後、我們可以認為是adaptor對operation進行了適配 ,這個適配體現在當客戶端需要給出某個具體的方法實現時、可以不必理會無關的方法;讓實現變得更為輕便。這一點在匿名內部類中體現得非常明顯。
應用時、呼叫具體的方法就好了
adaptor adaptor = new adaptor()
}**模式
所謂**、就是乙個人或乙個機構代表另乙個人或另乙個機構採取行動;而**物件可以在客戶端和目標物件之間起到中介的作用。
**模式是給某乙個物件提供乙個**物件,並由**物件控制原物件的引用。
應用:先定義乙個抽象類
public abstract class subject
然後在繼承類中實現具體方法
public class realsubject extends subject
}由於deletesubject操作的敏感性,如果需要在執行這個方法之前執行一些前處理和後處理的工作如許可權過濾等;那就要在真實主題realsubject被訪問之前、執行一些**操作;而**類就負責執行這一過程。
public class proxysubject extends subject
realsubject.deletesubject();
//後處理方法
clear();}}
在proxysubject類中,直接繼承了subject抽象類、同realsubject類一樣;proxysubject需要實現subject中的方法deletesubject();由於需要對realsubject進行一些**操作;在proxysubject類中的deletesubject()方法中,直接呼叫了realsubject類中的deletesubject()方法。並在這個方法執行前、進行了驗證。
[/size]
設計模式(3) 工廠設計模式
1.概述 定義乙個用於建立物件的工廠介面,讓工廠子類決定將哪乙個產品類例項化。此模式讓乙個產品類的例項化延遲到工廠子類。2.實現 先定義乙個抽象產品類,包含產品類的公共 再定義乙個抽象工廠類,用乙個方法返回乙個具體的產品類 分別實現具體的產品類,和對應的具體工廠類 3.抽象產品類 internal ...
設計模式(3)
命令模式 將 請求 封裝成物件,以便使用不同的請求 佇列 日誌來引數化其他物件。命令模式也支援可撤銷的操作。1 將動作的請求者從動作的執行者物件中解耦出來。2 在被解耦的兩者之間是通過命令物件進行溝通的,命令物件封裝了接收者和乙個或一組動作。3 呼叫者通過呼叫命令物件的execute 發出請求,這會...
設計模式(3)
oo 中的繼承性思考和說明中的繼承性思考和說明 繼承包含這樣一層義 父類中凡是已經實現好的方法,實際上是在設定規範和契約,雖然它不強制要求所有的子類必須遵循這些契但是如果對些已經實現的方法任意修改,就會對整個繼承體系造成破壞 繼承在給程式設計帶來便利的同時,也帶來了弊端。比如使用繼承會給程式侵入性,...