class Fraction { private int _numerator; private int _denominator; public Fraction(int numerator, int denominator) { this._numerator = numerator; this._denominator = denominator; }
適配器模式(Adapter):將一個類的一個介面轉換成客戶希望的另外一個介面。Adapter模式使得原本由於介面不相容而不能一起工作的那些類可以一起工作。1、兩個類所做的事情相同或相似,但是具有不同的介面時要使用它。(DataAdapter用作DataSet和資料來源之間的適配器以便檢索和儲存資料) 適配器模式代碼Code highlighting produced by Actipro CodeHighlighter
單一職責原則(SRP):就一個類而言,應該僅有一個引起它變化的原因。如果一個類承擔的職責過多,就等於把這些職責耦合在一起,一個職責的變化可能會削弱或抑制這個類完成其他職責的能力。當變化發生時,設計會遭到意想不到的破壞。軟體設計真正要做的許多內容,就是發現指責,並把那些職責分離。如果你有多於一個原因去修改一個類,那麼這個類就具有多於一個的職責。代碼來源:敏捷式軟體開發 (Agile Software Development)(C#版)Code highlighting produced by
單例模式(Singleton):保證一個類僅有一個執行個體,並提供一個訪問它的全域訪問點。1、多線程:lock是確保一個線程在臨界區,另一個線程不能進入臨界區。如果其他線程試圖進入鎖定的代碼,它將一直等待。代碼Code highlighting produced by Actipro CodeHighlighter
建造者模式(Builder):將一個複雜物件的構建與它的表示分離,使得同樣的建造過程可以建立不同的表示。1、Builder是什嗎?是建立一個Product對象的各個組件指定的抽象介面。2、ConcreteBuilder 是什嗎?是具體建造者,實現Builder介面,構造和裝配各個組件。3、Director是什嗎?指揮者,構建一個使用Builder介面的對象。建造者模式代碼Code highlighting produced by Actipro CodeHighlighter
面板模式(Facade):為子系統中的一組介面提供一個一致的介面,此模式定義了一個高層介面,這個介面使得這一子系統更容易使用。1、在設計初級階段,應該要有意識的將不同的兩個層分離。2、層與層之間建立外觀Facade,為複雜的子系統提供一個簡單的介面,使得耦合大大降低。3、在開發階段,子系統往往因為不斷的重構演化而變得越來越複雜。4、增加 Facade可以提供一個簡單的介面,減少他們之間的依賴。Facade代碼Code highlighting produced by Actipro
開放封閉原則(OCP):軟體實體(類、模組、函數等)應該是可以擴充的,但是不可修改。1、對於擴充是開放的(open for extension)。這意味著模組的行為是可以擴充的。當應用的需求改變時,我們可以對模組擴充,使其滿足那些改變的新行為。2、對於修改是封閉的(closed for modification)。對模組進行擴充時,不必改動模組的原始碼或者二進位代碼。 代碼來源:敏捷式軟體開發 (Agile Software Development)(C#版)代碼Code