面向對象設計模式總結一

面向對象設計的優點
面向對象設計的優點:可維護、可擴展、可複用、靈活性好。

目標
面向對象設計的目標:高內聚,低耦合。

設計模式分類
面向對象常見的23種設計模式主要分爲:創建型、結構型和行爲型。

  • 創建型:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式
  • 結構型:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式
  • 行爲型:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介模式、解釋器模式

面向對象設計原則
1. 單一職責原則:
就一個類而言,應該僅有一個引起它變化的原因。
1.1 如果你能夠想到多於一個動機去改變一個類,那麼這個類就具有多於一個的職責,就應該考慮類的職責分離。
2.開放-封閉原則:
軟件實體(類,模塊,函數等)應該可以擴展,但是不可修改。
2.1 無論模塊是多麼的‘封閉’,都會存在一些無法對之封閉的變化,既然不可能完全封閉,設計人員必須對於他設計的模塊
應該對哪種變化封閉做出選擇。他必須先猜測出最有可能發生的變化種類,然後構造抽象來隔離那些變化。
2.2 面對需求,對程序的改動是通過增加新代碼進行的,而不是更改現有的代碼。
3.依賴倒轉原則:
高層模塊不應該依賴低層模塊。兩個都應該依賴抽象。
抽象不應該依賴細節,細節應該依賴抽象。
3.1 針對接口編程,不要對實現編程。
4.里氏代換原則:
子類型必須能夠替換掉它們的父類型。
4.1 一個軟件實體如果使用的是一個父類的話,那麼一定適用於其子類,而且它察覺不出父類對象和子類對象的區別。
也就是說,在軟件裏面,把父類都替換成它的子類,程序的行爲沒有變化。
5.迪米特法則:(最少知識原則)
如果兩個類不必彼此直接通信,那麼這兩個類就不應該發生直接的相互作用。
如果其中一個類需要調用另一個類的某一個方法的話,可以通過第三者轉發這個調用。
5.1 在類的結構設計上,每一個類都應當儘量降低成員的訪問權限。
5.2 類之間的耦合越弱,越有利於複用,一個處在弱耦合的類被修改,不會對有關係的類造成涉及。
6.合成/聚合複用原則:
儘量使用合成/聚合,儘量不要使用類繼承。
6.1 聚合表示一種弱的擁有關係,體現的是A對象可以包含B對象,但B對象不是A對象的一部分
6.2 合成則是一種強的擁有關係,體現了嚴格的部分和整體的關係,部分和整體的生命週期一樣。
6.3 優先使用對象的合成/聚合將有助於你保持每個類被封裝,並被集中在單個任務上。這樣類和類繼承層次會保持較小規模,
並且不太可能增長爲不可控制的龐然大物。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章