Singleton Pattern
針對一些在應(yīng)用中只會有一個對象存在的類而總結(jié)的模式。
令人意想不到的是,它是通過聲明該類的構(gòu)造函數(shù)為私有這種方法來實現(xiàn)的。
疑問就是,既然構(gòu)造函數(shù)都成私有了,那怎么來創(chuàng)建這個類的對象呢?
解答就是通過在類中聲明一個靜態(tài)方法,返回這個對象。
典型的寫法是
public static Singleton getInstance(){
if(uniqueInstance==null){uniqueInstance = new Singleton();}
return uniqueInstance;
}
這個模式的精髓就這么簡單,剩下的就是線程對對象的操作安全,要把這個方法加上synchronized關(guān)鍵字。
Command Pattern
書中是以餐館點菜作比來講述這個模式的。
其中的對比概念如下
Customer-------Client
Order------------Command
Waitress--------Invoker
Cook------------Receiver
Take order--------setCommand
orderUp-----------excute
怎么來解釋呢?說白了,就是把調(diào)用類要達(dá)成的操作封裝成一個Command對象,就像點菜那張單子一樣,當(dāng)然這個Command要符合一定的規(guī)則實現(xiàn)Command接口,里面非常重要的一個方法就是execute。
setCommand方法相當(dāng)于waitress把菜單遞給了廚師,在接收者方面他只管運(yùn)行execute,具體做什么傳過來的command對象都已經(jīng)設(shè)定好了。
Adapter & Façade
適配器模式其實沒什么多說的,就是要把傳過去的對象要實現(xiàn)接收者支持的格式,那個格式實際上就是一個接口。
而Façade模式是一種衍生物,它的目的是讓操作簡單化。將一系列不同對象中的操作整合,提供給其它類調(diào)用接口書上的例子是家庭影院,要看部電影,要開這個電器,開那個電器,通過Façade模式,將要看電影所必須的動作整合起來,一鍵搞定。明白了這點,也就理解了這個模式。