Skip to content

wj-wong/DesignPatternPractice

 
 

Repository files navigation

DesignPatternPractice

使用C#練習DesignPattern

物件導向程式語言特性

  • 封裝:將變化封裝至函式中,外部程式碼在使用時只需要知道方法簽章,不需要了解內部實作的細節。

  • 繼承:可以從父類別衍生出子類別,子類別可以實作屬於自己的函式。

  • 多型:從父類別衍生出的子類別,可以替代子類別,而不會出錯

物件導向程式設計的基本原則 - SOLID

  • 單一職責(Single responsibility principle): 對一個類別來說,應該只有一個引起他變化的原因。如果類別承擔的職責太多,在產生變化時,會遭受意想不到的破壞。如果你想到超過一個原因去修改類別,那該類別就承擔了過多的職責。

  • 開放封閉(Open/closed principle):設計類別時對類別的擴充保持開放,對修改保持封閉。當面對需求變化時,一定會有無法封閉的變化,這時候就必須構造抽象點來隔離那些變化。

  • 里氏替換(Liskov substitution principle): 類別必須可以替換他們的類別,子類別的可替換性使得父類別的模組在無需修改的情況下可以擴展。

  • 介面隔離(Interface segregation principle): 針對介面程式設計,而非對**實現(Implement)**程式設計。抽取相同功能形成介面,讓各類別去實作,對呼叫的程式端來說,只須在意開放出來介面提供的功能,且將來需要抽換時只需要實作相同介面的類別即可。

  • 依賴倒轉(Dependency inversion principle) 高層模組不應該依賴低層模組,兩者都應該依賴抽象。模組之間如果太過耦合,很容易出現改了A被迫要修改B,如果都依賴抽象,兩者都只要關注自己本身即可。

Patterns

參考書籍:

About

C# Desgin Pattern 學習筆記

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%