在物件導向程式中,遵循SOLID這五項基本原則,可幫助程式設計師可以寫出好維護且彈性的程式架構 :

  • Single responsibility principle(SRP) 單一職責
    • 就單一物件而言,應該只有一個引起其變化的原因

    • 實際開發中的體現,比如一個物件僅是某一個事物相關的集合,單一函數僅執行單一職責,避免添加部必要亦或不相關的程式邏輯,進而提高程式的可維護性,可復用性。

  • Open/close principle(OCP) 開放/封閉原則
    • OCP係指軟體實體(類、模塊、函數等等)皆應可擴展,但不可以修改,即對擴展是開放的,然而對修改是關閉的。

    • 在實務上當有新的需求增加時,應該通過增加新的代碼來完成,而不是修改現有的代碼。然而絕對的對修改關閉是不可能的,但仍可預先猜測最有可能發生的變化種類,然後構造抽象來隔離那些變化。

  • Liskov substitution principle(LSP) Liskov替換
    • 子類別應該可以替換掉父類別而不會影響程式架構
       
  • Interface Segregation Principle(ISP) 介面隔離
    • 透過介面將功能的實體分離出來
       
  • Dependency Inversion Principle(DIP) 依賴反轉
    1. 高層模塊不應該依賴底層模塊。兩個都應該依賴抽象

    2. 抽象不應該依賴細節。細節應該依賴抽象

 

然而對於重複性出現的問題,提出及其解決方案即可稱之為"Design Pattern"。因此每一個設計模式應具備以下特徵 : 

  • Name : 模式名稱
  • Context : 問題的發生情境
  • Problem : 問題本身
  • Force : 問題的限制或特性
  • Solution : 解決問題的方法
  • Resulting Context : 結果

而其中「Design Patterns: Elements of Reusable Object-Oriented Software」一書最為著名,其針對某些常見的問題提出解決方案。以下為"Gof 23 Design Pattern"所提出的模式與分類。

 

Gof 23 Design Pattern

Creational 模式

  1. Builder 模式
  2. Prototype 模式
  3. Singleton 模式
  4. Simple Factory 模式
  5. Abstract Factory 模式
  6. Factory Method 模式
  7. Registry of Singleton 模式

Structural 模式

  1. Default Adapter 模式
  2. Adapter 模式 - Object Adapter
  3. Adapter 模式 - Class Adapter
  4. Bridge 模式
  5. Composite 模式
  6. Decorator 模式
  7. Facade 模式
  8. Flyweight 模式
  9. Proxy 模式

Behavioral 模式

  1. Chain of Responsibility 模式
  2. Command 模式
  3. Iterator 模式
  4. Strategy 模式
  5. Template Method 模式
  6. Observer 模式
  7. Mediator 模式
  8. State 模式
  9. Memento 模式
  10. Visitor 模式
  11. Interpreter 模式
arrow
arrow
    創作者介紹
    創作者 Lung-Yu,Tsai 的頭像
    Lung-Yu,Tsai

    Lung-Yu,Tsai 的部落格

    Lung-Yu,Tsai 發表在 痞客邦 留言(0) 人氣()