享元模式(Flyweight)
意圖:運(yùn)用共享技術(shù)有效地支持大量細(xì)粒度的對(duì)象。
主要解決:在有大量對(duì)象時(shí)玷过,有可能會(huì)造成內(nèi)存溢出爽丹,我們把其中共同的部分抽象出來(lái),如果有相同的業(yè)務(wù)請(qǐng)求辛蚊,直接返回在內(nèi)存中已有的對(duì)象,避免重新創(chuàng)建袋马。
代理模式(Proxy)
意圖:為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問(wèn)初澎。
主要解決:在直接訪問(wèn)對(duì)象時(shí)帶來(lái)的問(wèn)題,比如說(shuō):要訪問(wèn)的對(duì)象在遠(yuǎn)程的機(jī)器上虑凛。在面向?qū)ο笙到y(tǒng)中碑宴,有些對(duì)象由于某些原因(比如對(duì)象創(chuàng)建開銷很大,或者某些操作需要安全控制桑谍,或者需要進(jìn)程外的訪問(wèn))延柠,直接訪問(wèn)會(huì)給使用者或者系統(tǒng)結(jié)構(gòu)帶來(lái)很多麻煩,我們可以在訪問(wèn)此對(duì)象時(shí)加上一個(gè)對(duì)此對(duì)象的訪問(wèn)層锣披。
橋接模式(Bridge)
意圖:將抽象部分與實(shí)現(xiàn)部分分離贞间,使它們都可以獨(dú)立的變化贿条。
主要解決:在有多種可能會(huì)變化的情況下,用繼承會(huì)造成類爆炸問(wèn)題增热,擴(kuò)展起來(lái)不靈活
組合模式(Composite)
意圖:將對(duì)象組合成樹形結(jié)構(gòu)以表示"部分-整體"的層次結(jié)構(gòu)整以。組合模式使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性。
主要解決:它在我們樹型結(jié)構(gòu)的問(wèn)題中钓葫,模糊了簡(jiǎn)單元素和復(fù)雜元素的概念悄蕾,客戶程序可以向處理簡(jiǎn)單元素一樣來(lái)處理復(fù)雜元素,從而使得客戶程序與復(fù)雜元素的內(nèi)部結(jié)構(gòu)解耦础浮。
裝飾器模式(Decorator)
意圖:動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé)帆调。就增加功能來(lái)說(shuō),裝飾器模式相比生成子類更為靈活豆同。
主要解決:一般的番刊,我們?yōu)榱藬U(kuò)展一個(gè)類經(jīng)常使用繼承方式實(shí)現(xiàn),由于繼承為類引入靜態(tài)特征影锈,并且隨著擴(kuò)展功能的增多芹务,子類會(huì)很膨脹。
適配器模式(Adapter)
意圖:將一個(gè)類的接口轉(zhuǎn)換成客戶希望的另外一個(gè)接口鸭廷。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作枣抱。
主要解決:主要解決在軟件系統(tǒng)中,常常要將一些"現(xiàn)存的對(duì)象"放到新的環(huán)境中辆床,而新環(huán)境要求的接口是現(xiàn)對(duì)象不能滿足的佳晶。
門面模式(Facade)
意圖:為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,外觀模式定義了一個(gè)高層接口讼载,這個(gè)接口使得這一子系統(tǒng)更加容易使用轿秧。
主要解決:降低訪問(wèn)復(fù)雜系統(tǒng)的內(nèi)部子系統(tǒng)時(shí)的復(fù)雜度,簡(jiǎn)化客戶端與之的接口咨堤。