命令模式屬於行為模式。如你的上級領導指派給你的a,b,c三項任務。讓你做a,你就做a,讓你做b就做b。指哪打哪。
外部的人對於你和你的領導來說,知道你的領導派發了abc任務給你,你也完成abc任務,任務具體是怎麼完成的外部的人並不需要關心。
大學的新生入學都會進行軍訓,軍訓的專案有正步,齊步,軍姿等等… 而這一系列的內容都是由教官下發命令,所有的同學進行執行。
只需要封裝乙個具體的軍訓類管理即可,直接呼叫即可
public
class militarytraining
public
void
goose()
}
(一)命令介面做什麼public
inte***ce command
(二)具體的命令
齊步命令:
public
class
marchcommand
implements
command
@override
public
void
dosomothing()
}}
正步命令:
public
class
goosecommand
implements
command
@override
public
void
dosomothing()
}}
(三)命令控制的管理器public
class commandcontroller
public
void
setmarchcommand(marchcommand marchcommand)
public
void
marchcommadn()
}public
void
goosecommand()
}}
(四)呼叫方式militarytraining militarytraining=new militarytraining();
militarytraining.goose();//正步
militarytraining.march();//齊步
//採用命令模式呼叫
/** * 優點:命令模式耦合度更低,擴充套件性更強,維護方便,
* 可對命令進行組合使用
* 對新的命令擴充套件更容易**/
militarytraining militarytraining1 = new militarytraining();
goosecommand goosecommand = new goosecommand(militarytraining1);
marchcommand marchcommand = new marchcommand(militarytraining1);
commandcontroller commandcontroller = new commandcontroller();
commandcontroller.setgoosecommand(goosecommand);
commandcontroller.setmarchcommand(marchcommand);
commandcontroller.goosecommand();
commandcontroller.marchcommadn();
(五)顯示結果軍訓正步
軍訓齊步
軍訓正步
軍訓齊步
優點:
缺點:明顯看出上面的呼叫方式,傳統方式2行**就可以解決的問題,使用命令模式卻多了很多類和**,還不如不用設計模式清晰簡單,為什麼會這樣呢?
因為上述的命令以及行為操作很簡單,因此對於簡單的行為操作命令,個人建議按照傳統方式使用書寫就好,過度使用設計模式反而令人不易理解,類的增加也極其迅速。
但是命令模式的好處是對於複雜的行為命令,可以更好的降低耦合度,將命令發起方與執行方隔離,只需要發起命令,由誰完成,怎麼樣完成都不需要知道。
android設計模式之抽象工廠模式
定義 抽象工廠模式定義為為建立一組相關或者相互依賴的物件提供乙個介面,而且無需指定他們的具體類。它是工廠方法模式的公升級版本。在有多個業務品種,業務分類時,通過抽象工廠模式產生需要的物件是一種非常好的解決方式。模式中包含的角色及其職責 1.抽象工廠 creator 角色 抽象工廠模式的核心,包含對多...
Android設計模式之(14) 模板模式
模板模式屬於行為模式.簡單理解,某一套程式的流程是不改變的,但是具體的內容是可以更改的。例如公司的財務報表,需要進行申請,然後經理簽字以後才可以審批下來。流程 下屬財務資金審核提交 經理審核 經理簽字 審批完成 內容 有2個人去申請資金,他們執行的流程是一樣的,但是具體申請的資金以及經理審批後給予的...
android 設計模式之builder(一)
android中的builder模式非常的常見,應用的也很廣泛,不okhttp,alertdialog等等都有使用這種模式,這種模式的好處就是講操作的細節隱藏了起來,只關注結果 今天我就簡單地分析下alertdialog的原始碼,但是呢,先來寫乙個關於builder的簡單demo,這樣理解alert...