【正文】
hronized Singleton getInstance() { if (instance==null) instance= new Singleton()。 DIP原則告訴我們:要對(duì)接口編程,不要對(duì)實(shí)現(xiàn)編程,只有這樣才能更好地實(shí)現(xiàn) OCP。來(lái)到市場(chǎng),我發(fā)現(xiàn)主要有一些水果:蘋果( Apple),葡萄( Grape)和鴨梨( Pear)。 ? Abstract Factory模式 ? 提供一個(gè)共同的接口來(lái)創(chuàng)建相互關(guān)聯(lián)的多個(gè)對(duì)象。工廠角色必須知道每一種產(chǎn)品,如何創(chuàng)建它們,以及何時(shí)向客戶端提供它們。 幾個(gè)基本的設(shè)計(jì)模式 —— 工廠模式 ? Factory Method模式 F r u it+ e n a b le E a t ( )+ p la n t ( )A p p le+ e n a b le E a t ( )+ p la n t ( )P e a r+ e n a b le E a t ( )+ p la n t ( )G r a p e+ e n a b le E a t ( )+ p la n t ( )B u y F r u it+ B u y F r u it ( )C lie n tB u y A p p le+ B u y F r u it ( )B u y G r a p e+ B u y F r u it ( )B u y P e a r+ B u y F r u it ( )幾個(gè)基本的設(shè)計(jì)模式 —— 工廠模式 ? Factory Method模式 ? 工廠方法模式和簡(jiǎn)單工廠模式在結(jié)構(gòu)上的不同是很明顯的。設(shè)想如果非常確定一個(gè)系統(tǒng)只需要一個(gè)具體工廠類,那么就不妨把抽象工廠類合并到具體的工廠類中去。對(duì)于增加新的水果類而言,這個(gè)系統(tǒng)完全支持“開(kāi) 閉”原則。 ? 抽象工廠模式是所有形態(tài)的工廠模式中最為抽象和最具一般性的一種形態(tài)。 當(dāng)客戶端應(yīng)用不關(guān)心節(jié)點(diǎn)是否為葉節(jié)點(diǎn)還是枝節(jié)點(diǎn)時(shí)(即客戶端想對(duì)葉節(jié)點(diǎn)和枝節(jié)點(diǎn)一視同仁時(shí)),可以采用該種模式。可以通過(guò)子節(jié)點(diǎn)的值是否為 null來(lái)判斷它是不是葉節(jié)點(diǎn)。 幾個(gè)基本的設(shè)計(jì)模式 —— 工廠模式 ? Abstract Factory Method模式 A p p le+ e n a b le E a t ( )+ p la n t ( )F r u it+ e n a b le E a t ( )+ p la n t ( )G r a p e+ e n a b le E a t ( )+ p la n t ( )P e a r+ e n a b le E a t ( )+ p la n t ( )C lie n t M e a t+ e n a b le E a t ( )+ f e e d ( )C ow M e a t+ e n a b le E a t ( )+ f e e d ( )P ig M e a t+ e n a b le E a t ( )+ f e e d ( )B u y e r+ b u y F r u it ( )+ b u y M e a t ( )I+ b u y F r u it ( )+ b u y M e a t ( )Y ou+ b u y F r u it ( )+ b u y M e a t ( )Apple與 CowMeat是一個(gè)產(chǎn)品的兩個(gè)套件 幾個(gè)基本的設(shè)計(jì)模式 —— 工廠模式 ? Factory Method模式 ? 抽象工廠模式可以向客戶端提供一個(gè)接口,使得客戶端在不必指定產(chǎn)品的具體類型的情況下,創(chuàng)建多個(gè)產(chǎn)品族中