【正文】
組成的社區(qū)通常會(huì)發(fā)明一些專業(yè)術(shù)語,以便于同行之間進(jìn)行交流。他研究的領(lǐng)域是建筑(而不是軟件)的架構(gòu)。應(yīng)該由類本身來負(fù)責(zé)只使用一個(gè)類實(shí)例,而不是由類用戶來負(fù)責(zé)。具體怎么操作自己選擇。 ? 工廠方法模式退化后可以變得很像簡單工廠模式。這種方法的一個(gè)很大優(yōu)勢在于,可通過在運(yùn)行時(shí)為葉節(jié)點(diǎn)增加子節(jié)點(diǎn)而使它成為非葉節(jié)點(diǎn);而缺陷在于不存在抽象層(不管是否應(yīng)用設(shè)計(jì)模式,將抽象層提煉出來通常是一個(gè)很好的實(shí)踐,因?yàn)槟軌蚴褂贸橄髮拥母油ㄓ玫念悂砭帉懣蛻舻拇a)。 ? 有什么辦法可以解決這個(gè)問題嗎?那就需要 Factory Method模式來為我們服務(wù)了。 幾個(gè)基本的設(shè)計(jì)模式 —— 工廠模式 ? 為什么要有工廠模式? ? 就拿我們一開始學(xué)到的手機(jī)發(fā)短信的例子,如果沒有“手機(jī)工廠”,就等于將手機(jī)對象的創(chuàng)建工作放到所有的客戶( Client)中完成,沒有實(shí)現(xiàn)良好的封裝和重用,也違背了 OCP原則與 DIP原則。又如建立目錄、數(shù)據(jù)庫連接、 Windows針對所有用戶都應(yīng)有一個(gè)回收站等,都需要這樣的單對象的操作。 設(shè)計(jì)模式基礎(chǔ) —— 什么是設(shè)計(jì)模式 ? 設(shè)計(jì)模式使人們可以更加簡單方便地復(fù)用成功的設(shè)計(jì)和體系結(jié)構(gòu),幫助你做出有利于系統(tǒng)復(fù)用的選擇,避免設(shè)計(jì)損害了系統(tǒng)復(fù)用性。 影片出租店的程序 ? 從 Customer類中 statement方法中分離出 amountFor功能 ? amountFor方法中變量名稱的修改 ? 任何一個(gè)傻瓜都能寫出計(jì)算機(jī)可以理解的代碼。 你 唯 一 可 以 做 的 就 是 編 寫 一 個(gè) 全 新 的htmlstatement(),大量重復(fù) statement()行為 。除了計(jì)算費(fèi)用還要為常客計(jì)算點(diǎn)數(shù);點(diǎn)數(shù)會(huì)隨著“租片種類是否為新片”而有所不同。但是當(dāng)我們打算修改系統(tǒng)的時(shí)候,就涉及到了人,而人在乎這些。 但如果我們把 statement()內(nèi)的代碼拷貝到用以打印 HTML報(bào)表的函數(shù)中 , 我們就必須確保將來的任何修改在兩個(gè)地方保持一致 。有經(jīng)驗(yàn)的面向?qū)ο笤O(shè)計(jì)者的確能做出良好的設(shè)計(jì),而新手則面對眾多選擇無從下手,總是求助于以前使用過的非面向?qū)ο蠹夹g(shù)。這樣,你就能一次又一次地使用該方案而不必做重復(fù)勞動(dòng) ” 。餓漢式在類一實(shí)例化的時(shí)候就初始化了instance;懶漢式僅在調(diào)用時(shí)才初始化。 ? Abstract Factory模式 ? 提供一個(gè)共同的接口來創(chuàng)建相互關(guān)聯(lián)的多個(gè)對象。對于增加新的水果類而言,這個(gè)系統(tǒng)完全支持“開 閉”原則。 幾個(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是