【正文】
式( pattetn)就是做事的一種方法,也即實現(xiàn)某個目標的途徑,或者技術。 但如果我們把 statement()內(nèi)的代碼拷貝到用以打印 HTML報表的函數(shù)中 , 我們就必須確保將來的任何修改在兩個地方保持一致 。 當然 , 現(xiàn)在做這個還不太費力 , 你可以把 statement()復制一份然后按需要修改就是 。但是當我們打算修改系統(tǒng)的時候,就涉及到了人,而人在乎這些。 影片出租店的程序 ? 初始代碼 ? 這個起始程序給你留下什么印象?我會說他設計的不好,而且很明顯不符合面向?qū)ο蟮木?。除了計算費用還要為??陀嬎泓c數(shù);點數(shù)會隨著“租片種類是否為新片”而有所不同。編譯器才不會在乎代碼好不好看呢。 你 唯 一 可 以 做 的 就 是 編 寫 一 個 全 新 的htmlstatement(),大量重復 statement()行為 。 影片出租店的程序 ? 為了應付分類規(guī)則和計費規(guī)則的變化 , 程序必須對statement()作出修改 。 影片出租店的程序 ? 從 Customer類中 statement方法中分離出 amountFor功能 ? amountFor方法中變量名稱的修改 ? 任何一個傻瓜都能寫出計算機可以理解的代碼。 設計模式基礎 —— 什么是設計模式 ? 在面向?qū)ο蟮能浖O計中,總是希望避免重復設計或盡可能少做重復設計。 設計模式基礎 —— 什么是設計模式 ? 設計模式使人們可以更加簡單方便地復用成功的設計和體系結構,幫助你做出有利于系統(tǒng)復用的選擇,避免設計損害了系統(tǒng)復用性。 ? Christopher Alexander 說過: “ 每一個模式描述了一個在我們周圍不斷重復發(fā)生的問題,以及該問題的解決方案的核心。又如建立目錄、數(shù)據(jù)庫連接、 Windows針對所有用戶都應有一個回收站等,都需要這樣的單對象的操作。 ? 3:解決方案 S in g le t o n I n s t a n ce : S in g le t o n+ g e t I n s t a n ce ( ) S in g le t o n ( )私有的靜態(tài)屬性,類的唯一實例 將構造函數(shù)私有化 通過共有的函數(shù)返回 Instance 幾個基本的設計模式 —— 單例模式 ? 一般 Singleton模式通常有如下兩種種形式,第一種叫餓漢式,第二種叫懶漢式。 幾個基本的設計模式 —— 工廠模式 ? 為什么要有工廠模式? ? 就拿我們一開始學到的手機發(fā)短信的例子,如果沒有“手機工廠”,就等于將手機對象的創(chuàng)建工作放到所有的客戶( Client)中完成,沒有實現(xiàn)良好的封裝和重用,也違背了 OCP原則與 DIP原則。 ? Factory Method模式 ? 將對象的創(chuàng)建交由父類中定義的一個標準方法來完成,而不是其構造函數(shù),究竟應該創(chuàng)建何種對象由具體的子類負責決定。 ? 有什么辦法可以解決這個問題嗎?那就需要 Factory Method模式來為我們服務了。沒有必要修改客戶端,也沒有必要修改抽象工廠角色或者其他已有的具體工廠角色。這種方法的一個很大優(yōu)勢在于,可通過在運行時為葉節(jié)點增加子節(jié)點而使它成為非葉節(jié)點;而缺陷在于不存在抽象層(不管是否應用設計模式,將抽象層提煉出來通常是一個很好的實踐,因為能夠使用抽象層的更加通用的類來編寫客戶的代碼)。這就是抽象工廠模式的用意。 ? 工廠方法模式退化后可以變得很像簡單工廠模式。 ? 但是對于工廠角色( BuyFruit)來說,增加新的產(chǎn)品(比如說增加草莓)就是一個痛苦的過程。具體怎么操作自己選擇。 } } ? public class Singleton { private static Singleton instance = null。應該由類本身來負責只