設計模式
1. Alexander給出的模式經典定義是:每個模式都描述了一個在我們的環境中不斷出現的問題,然後描述了該問題的解決方案的核心,通過這種方式,我們可以無數次地使用那些已有的解決方案,無需再重複相同的工作。
2. 目的:實現高內聚,低耦合
3. 設計模式原則
l “開-閉”原則(Open-Closed Principle, OCP)
“Software entities should be open for extension,but closed for modification”,就是說模塊應對擴展開放,而對修改關閉。模塊應儘量在不修改原來的代碼的情況下進行擴展。增加功能時,寧可增加一個新類,也不要修改一個已有的類
l 里氏代換原則(Liskov Substitution Principle, LSP)
“Barbara Liskov”提出,如果調用的是父類的話,那麼換成子類也完全可以運行。
l 合成複用原則(Composition/Aggregation Reuse Principle, CARP)
要少用繼承,多用合成關係來實現,能不用繼承儘量不用繼承,因爲繼承會對子類暴露一些信息。
l 依賴倒轉原則(Dependency Inversion Principle, DIP)
抽象不應該依賴於細節,細節應當依賴於抽象。要針對接口編程,而不是針對實現編程。傳遞參數,或者在組合聚合關係中,儘量引用層次高的類。節省大量編碼
l 接口隔離原則(Interface Segregation Principle, ISP)
每一個接口應該是一種角色,不多不少,不幹不該乾的事,該乾的事都要幹
功能單一(高內聚)
l 迪米特法則(Law of Demeter, LoD)
最少知識原則,不要和陌生人說話
模塊要和儘量少的其他模塊發生聯繫(低耦合)
常見模式23種:三大類: 創建模式、結構模式、行爲模式
創建模式
創建模式(Creational Pattern)對類的實例化過程進行了抽象。
u 簡單工廠模式(Simple Factory)
u 工廠方法模式(Factory Method)
u 原型模式(Prototype)
u 單例模式(Singleton)
u 建造者模式(Builder)
結構模式
結構模式(Structural Pattern)描述如何將類或者對象結合在一起形成更大的結構。結構模式描述兩種不同的東西:類與類的實例(即對象)。根據這一點,結構模式可以分爲類的結構模式和對象的結構模式
u 適配器模式(Adapter)
u 橋接模式(Bridge)
u 組合模式(Composite)
u 裝飾模式(Decorator)
u 外觀模式(Facade)
u 享元模式(Flyweight)
u 代理模式(Proxy)