設計模式代表了最佳實踐,是開發人員在開發過程中面臨的一般問題的解決方案。這些解決方案是眾多開發人員經過相當長的一段時間的試驗和錯誤總結出來的 歷史 設計模式是一套被反覆使用,經過考驗的設計經驗的總結。使用設計模式是為了重用代碼,增強代碼的可讀性。 1994年,由Gang of Four在《設計模式 ...
設計模式代表了最佳實踐,是開發人員在開發過程中面臨的一般問題的解決方案。這些解決方案是眾多開發人員經過相當長的一段時間的試驗和錯誤總結出來的
歷史
設計模式是一套被反覆使用,經過考驗的設計經驗的總結。使用設計模式是為了重用代碼,增強代碼的可讀性。
1994年,由Gang of Four在《設計模式-可復用的面向對象軟體元素》中首次提到了軟體開發中的設計模式的概念。他們所提出的設計模式主要是基於以下的面向對象設計原則:
- 對介面編程而不是對實現編程
- 優先使用對象組合而不是繼承
設計模式的類型
在《設計模式-可復用的面向對象軟體元素》中,設計模式總共有23種,這些模式可以分為3大類:創建模式、結構型模式以及行為模式。當然,還有另外一種模式:J2EE設計模式。
序號 | 模式和描述 | 包括 |
---|---|---|
1 | 創建型模式 這些設計模式提供了一種在創建對象的同時隱藏創建邏輯的方法, 而不是使用new運算符直接實例化對象。 這使得程式在判斷針對某個給定實例需要創建那些對象時更加靈活 |
工廠模式(Factory Pattern) 抽象工廠模式(Abstract Factory Pattern) 單例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern) |
2 | 結構型模式 這些設計模式關註類和對象的組合。 繼承的概念被用來組合介面和定義組合對象獲得新功能的方式。 |
適配器模式(Adapter Pattern) 橋接模式(Bridge Pattern) 過濾器模式(Filter、Criteria Pattern) 組合模式(Composite Pattern) 裝飾器模式(Decorator Pattern) 外觀模式(Facade Pattern) 享元模式(Flyweight Pattern) 代理模式(Proxy Pattern) |
3 | 行為型模式 這些設計模式特別關註對象之間的通信。 |
責任鏈模式(Chain of Responsibility Pattern) 命令模式(Command Pattern) 解釋器模式(Interpreter Pattern) 迭代器模式(Iterator Pattern) 中介者模式(Mediator Pattern) 備忘錄模式(Memento Pattern) 觀察者模式(Observer Pattern) 狀態模式(State Pattern) 空對象模式(Null Object Pattern) 策略模式(Strategy Pattern) 模板模式(Template Pattern) 訪問者模式(Visitor Pattern) |
4 | J2EE 模式 這些設計模式特別關註表示層。 這些模式是由 Sun Java Center 鑒定的。 |
MVC 模式(MVC Pattern) 業務代表模式(Business Delegate Pattern) 組合實體模式(Composite Entity Pattern) 數據訪問對象模式(Data Access Object Pattern) 前端控制器模式(Front Controller Pattern) 攔截過濾器模式(Intercepting Filter Pattern) 服務定位器模式(Service Locator Pattern) 傳輸對象模式(Transfer Object Pattern) |
設計模式的六大原則
開閉原則: 對擴展開放,對修改關閉。在程式需要進行拓展的時候,不能去修改原有的代碼。為了達到這個效果,需要使用介面和抽象類。
里氏代換原: 任何基類可以出現的地方,子類一定可以出現。只有當派生類可以替換掉基類並且程式的功能不受影響時,基類才能真正被覆用,而派生類也能夠在基類的基礎上增加新的行為。
依賴倒轉原則: 針對介面編程,依賴於抽象而不依賴於具體。
介面隔離原則: 使用多個隔離的介面,比使用單個介面要好。
迪米特法則: 一個實體應當儘量少地與其他實體之間發生相互作用,使得系統功能模塊相對獨立。
合成復用原則: 儘量使用合成/聚合的方式,而不是使用繼承。