1. 程式人生 > >面向物件的33種設計模式總結

面向物件的33種設計模式總結

簡介:
設計模式(Design pattern):面向物件的開發人員的最佳實踐,適合解耦,大型專案,團隊開發。
世間眾多設計模式目的是相同的,即隔離系統變化點。

型別:
設計模式分為建立型(關注物件建立)、結構型(關注物件組合)、行為型(關注物件通訊),包括33種設計模式。設計模式分為建立型(關注物件建立)、結構型(關注物件組合)、行為型(關注物件通訊),包括33種設計模式。

原則:
1、開閉原則(Open Close Principle):對擴充套件開放,對修改關閉。
2、里氏代換原則(Liskov Substitution Principle):任何基類可以出現的地方,子類一定可以出現。
3、依賴倒轉原則(Dependence Inversion Principle):針對介面程式設計,依賴於抽象而不依賴於具體。
4、介面隔離原則(Interface Segregation Principle):使用多個隔離的介面,比使用單個介面要好。
5、迪米特法則(Demeter Principle),又稱最少知道原則:個實體應當儘量少地與其他實體之間發生相互作用,使得系統功能模組相對獨立。
6、合成複用原則(Composite Reuse Principle):儘量使用合成/聚合的方式,而不是使用繼承。

核心思想:
(建議首先了解核心思想,根據工作需要進行實踐。脫離實踐通讀深究所有設計模式,個人認為收效不甚明顯。)
(各模式優缺點,適用場景,程式碼舉例檢視,強烈推薦:http://www.runoob.com/design-pattern/design-pattern-tutorial.html)
1、 工廠模式(Factory Pattern):工廠生產多款產品。
2、 抽象工廠模式(Abstract Factory Pattern):工廠生產多個系列的產品。
3、 單例模式(Singleton Pattern):全域性一個例項。私有的建構函式,靜態的本類例項化物件。
4、 建造者模式(Builder Pattern)(又稱,生成器模式):建造者組裝產品。
5、 原型模式(Prototype Pattern):建造原型以備克隆。物件克隆快於物件初始化。
6、 介面卡模式(Adapter Pattern):統一處理需要加入的實現。
7、 橋接模式(Bridge Pattern):抽象化角色和具體化角色之間通過介面橋接構建聯絡。不通過類繼承,使抽象化角色和具體化角色更靈活。
8、 過濾器模式(Filter Pattern)(又稱,標準模式)(Criteria Pattern):過濾類物件屬性,單個屬性或者屬性的交集、並集。
9、 組合模式(Composite Pattern)(又稱,部分整體模式):確定物件間的隸屬關係。
10、裝飾器模式(Decorator Pattern):同一種操作方式加在不同的物件上。
11、外觀模式(Facade Pattern):外觀類將複雜操作封裝在方法中。
12、享元模式(Flyweight Pattern):共享物件,減少物件數量。減輕記憶體溢位風險。
13、代理模式(Proxy Pattern):在已有基礎上增加新的操作。
14、責任鏈模式(Chain of Responsibility Pattern):觸發下一個節點物件的操作。
15、命令模式(Command Pattern):加入多個命令,統一執行。
16、直譯器(Interpreter Pattern):為語法建立邏輯。
17、迭代器(Iterator Pattern):順序訪問集合中的元素。
18、中介者模式(Mediator Pattern):提供中間平臺統一分發。
19、備忘錄模式(Memento Pattern):記錄歷史資料。
20、觀察者模式(Observer Pattern):在觀察項改變時,觀察者通知所有的聯絡實體。
21、狀態模式(State Pattern):給實體設定不同的狀態。
22、空物件模式(Null Object Pattern):用空物件代替空。
23、策略模式(Strategy Pattern):給實體設定不同的策略。
24、模板模式(Template Pattern):操作在不同子類中實現。
25、訪問者模式(Visitor Pattern):訪問者不同,操作不同。
26、MVC模式(Model-View-Controller Pattern):根據模型資料操作檢視。
27、業務代表模式(Business Delegate Pattern):業務代表設定不同服務型別,客戶端執行不同操作。
28、組合實體模式(Composite Entity Pattern):組合實體的資料分發到依賴實體中。
29、資料訪問物件模式(Data Access Object Pattern):從服務中分離資料訪問。
30、前端控制器模式(Front Controller Pattern):根據請求不同給出不同的檢視。
31、攔截過濾器模式(Intercepting Filter Pattern):對應用程式的請求或響應做一些預處理/後處理。
32、服務定位器模式(Service Locator Pattern):查詢某型別服務後,快取服務物件。
33、傳輸物件模式(Transfer Object Pattern):傳輸物件為業務物件提供資料訪問。