本節主要內容:物件導向的五個基本原則
一、單一職責原則(
single-responsibility principle
):就乙個類而言,應該僅有乙個引起它變化的原因。
例如:寫乙個
winform
應用程式,需要將資料庫的操作、檔案的操作、演算法的運用等,不需要將這些都寫在
form
這樣的類中。應該將它們各自分開,應對將來的變化。或許你在寫另外乙個
from
類的時候,也需要用到檔案操作,那樣你就可以復用檔案操作的類了,不用貼上複製**了。
二、開放封閉原則(
open-closed principle
):是說軟體實體(類、模組、函式等等)應該可以擴充套件的,但是不可修改。
例如:乙個公司成立之初,只有技術部員工。針對這部分我們**只需要寫乙個員工類就行。隨著公司的成長,公司又成立了銷售部,這時**就需要對員工類進行抽象了,因為技術部和銷售部員工的職能各不同了。分成技術類和銷售類。隨著公司的擴張。又成立了客服部。這時候我們**就不需要對技術類和銷售類修改(封閉),只是新增客服類就
ok了(開放)。
三、依賴倒置原則(
dependency-inversion principle
):抽象不應該依賴細節,細節應該依賴於抽象。
例如:客戶端對資料庫的插入操作。最初只是將資料儲存到
mysql
資料庫,現在需要儲存資料到
oracle
資料庫。我們應該對插入操作進行抽象,mysql和oracle實現插入操作的具體內容,使客戶端依賴與插入操作,而不應該依賴與
mysql
資料庫的操作或
oracle
資料庫操作。如下圖示:
四、黎克特制替換原則(liskov-substituent principe.):子類必須能夠替換掉它們的父類。其意思:子類必須具有父類的所有特性
例如:寫一動物類有奔跑乙個方法。狼類和羊類繼承動物類,它們都具有奔跑方法。如果此時在動物類中新增食肉這一方法,如果羊類不具有此方法,羊類就不能替換掉動物類。羊類就不能繼承動物類。
五、介面隔離原則(
inte***ce-segregation principle
):多個專用介面優於乙個單一的通用介面。其意思:不要將所有的方法都新增到乙個介面中。
例如:還是列舉狼類和羊類,它們都具有奔跑的方法,但狼具有食肉這一方法,而羊類不具有食肉這一方法。這時可以定義兩個介面,讓狼類繼承奔跑介面和食肉介面即可,而羊類繼承奔跑介面即可。
我們在設計類的時候,以上幾個原則,盡量遵循有助於軟體趨於合理。
物件導向的基本原則
單一職責原則 srp 就乙個類而言,應該僅有乙個引起它變化的原因。如果乙個類承擔的責任過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受意想不到的破壞。軟體設計真正要做的許多內容,就是發現職責並把那些職責相互...
關於C 物件導向的五個基本原則
五個基本原則 單一職責原則 single resposibility principle 乙個類,最好只做一件事,只有乙個引起它的變化。單一職責原則可以看做是低耦合 高內聚在物件導向原則上的引申,將職責定義為引起變化的原因,以提高內聚性來減少引起變化的原因。開放封閉原則 open closed pr...
物件導向五大基本原則
單一職責原則 srp single responsibility principle 又稱單一功能原則,物件導向五個基本原則 solid 之一。它規定乙個類應該只有乙個發生變化的原因。比如單例就是違背單一職責原則 開閉原則 ocp 是 物件導向設計 中 可復用設計 的基石,是物件導向 設計中最重要的...