什麼是SOLID?
S單一職責原則
認為物件應該僅具有一種單一功能的概念。
1.建立北京28期號
2.建立加拿大28期號
3.建立易利分分期號
所以已經違反了單一職責,所以我做了一些修正
單一職責就是希望我們這樣拆分類別,每個類別只要專注一件事情
單一職責算是很好理解,我們繼續往下看
O開放封閉原則
認為「軟體體應該是對於擴充開放的,但是對於修改封閉的」的概念
目前方法裡面只有一種邏輯,但是需求上都是多變的如下圖
如上圖若之後又新增了N個不同的邏輯,這個類別將會越來越肥大不好維護,所以修正了一下
在這邊我建立了一個抽象類別,裡面實作了一個基本的邏輯
像是時時彩的邏輯跟基本邏輯一樣就直接使用base.Create()
若是新的邏輯就直接override Create在自己的類別時做自己的邏輯
完全不影響之前所設計的邏輯
L里氏替換原則
認為「程式中的物件應該是可以在不改變程式正確性的前提下被它的子類別所替換的」的概念
如上圖先建立抽象或介面,實作類別可以任意被抽換
如上圖這邊我要串接第三方遊戲的功能
所以我訂了一個Interface把所需的功能都列出來
所以每個新的第三方遊戲要串接都只要實作這幾個Method如Gamma、AG、JDB、KY等等...
I介面隔離原則認為「多個特定用戶端介面要好於一個寬泛用途的介面」的概念
如上圖,我建立了一個ICRUD的Interface裡面有四個Method新增、刪除、修改、讀取
但現實上有如此美好,每個類別都需要CRUD嗎?
如上圖,像這個類別就只需要讀取跟修改,所以修正了一下
所以Interface必須又要再拆分,所以依照類別需要的功能來繼承Interface
D相依反轉原則
認為一個方法應該遵從「依賴於抽象而不是一個實體」的概念。 依賴注入是該原則的一種實現方式
修正成