一陋葡、面向對象的設計六大原則
- 單一職責原則(Single Responsibility Principle, SRP):一個類只負責一個功能領域中的相應職責,或者可以定義為:就一個類而言种蝶,應該只有一個引起它變化的原因。單一職責原則是最簡單的面向對象設計原則,它用于控制類的粒度大小锣尉。
個人思考:簡單的說攀隔,一個類的功能盡可能簡單皂贩,多個類實現(xiàn)復雜功能。編寫代碼時昆汹,根據(jù)職責多分幾個類實現(xiàn)復雜功能明刷。
- 開閉原則(Open-Closed Principle, OCP):一個軟件實體應當對擴展開放,對修改關閉满粗。即軟件實體應盡量在不修改原有代碼的情況下進行擴展辈末。 開閉原則是面向對象的可復用設計的第一塊基石映皆,它是最重要的面向對象設計原則
個人思考:防止需求的變化導致代碼修改挤聘。抽象化,就是開閉原則的關鍵
- 里氏代換原則(Liskov Substitution Principle, LSP):所有引用基類(父類)的地方必須能透明地使用其子類的對象捅彻。里氏代換原則是實現(xiàn)開閉原則的重要方式之一
個人思考:老爹對象能干的活组去,兒子繼承都能干,但是兒子能干的活步淹,老爹干不了添怔。編碼時,將父類設計為抽象類或者接口贤旷,子類實現(xiàn)具體方法广料,這樣擴展功能時,就只需要增加子類幼驶,而無需修改舊代碼艾杏。
- 依賴倒轉原則(Dependency Inversion Principle, DIP):抽象不應該依賴于細節(jié),細節(jié)應當依賴于抽象盅藻。換言之购桑,要針對接口編程畅铭,而不是針對實現(xiàn)編程。依賴倒轉原則就是面向對象設計的主要實現(xiàn)機制之一
在引入抽象層后勃蜘,系統(tǒng)將具有很好的靈活性硕噩,在程序中盡量使用抽象層進行編程,而將具體類寫在配置文件中缭贡,這樣一來炉擅,如果系統(tǒng)行為發(fā)生變化,只需要對抽象層進行擴展阳惹,并修改配置文件谍失,而無須修改原有系統(tǒng)的源代碼,在不修改的情況下來擴展系統(tǒng)的功能莹汤,滿足開閉原則的要求快鱼。某實現(xiàn)案例如下:
image.png
個人思考: 開閉原則,里氏代換原則纲岭,依賴倒置原則往往是同時出現(xiàn)的抹竹。注意四個概念:依賴注入,以及依賴注入的三種方式:構造注入止潮,設值注入(Setter注入)和接口注入窃判。常見:根據(jù)配置文件,實現(xiàn)某個功能沽翔。如截圖案例所示
- 接口隔離原則(Interface Segregation Principle, ISP):使用多個專門的接口兢孝,而不使用單一的總接口窿凤,即客戶端不應該依賴那些它不需要的接口仅偎。
個人思考:類似單一職責原則,不要太大的接口雳殊,接口方法不可過多橘沥。
- 迪米特法則(Law of Demeter, LoD):一個軟件實體應當盡可能少地與其他實體發(fā)生相互作用。
個人思考:就是修改一個類的時候夯秃,盡量少影響其他類座咆。思考多個類互相影響的場景:
如下圖實例中,可以通過引入一個專門用于控制界面控件交互的中間類(Mediator)來降低界面控件之間的耦合度仓洼。引入中間類之后介陶,界面控件之間不再發(fā)生直接引用,而是將請求先轉發(fā)給中間類色建,再由中間類來完成對其他控件的調(diào)用哺呜。當需要增加或刪除新的控件時,只需修改中間類即可箕戳,無須修改新增控件或已有控件的源代碼:
image.png
參考資料:
設計模式六大原則
二某残、設計模式分類
設計模式分為三大類
創(chuàng)建型(5種):單例国撵,工廠,抽象工廠玻墅,建造者模式介牙,原型模式
結構型(7種):外觀,組合澳厢,享元环础,代理,適配器赏酥,裝飾器喳整,橋接
行為型(11種):策略模式、模板方法模式裸扶、觀察者模式框都、迭代子模式、責任鏈模式呵晨、命令模式魏保、備忘錄模式、狀態(tài)模式摸屠、訪問者模式谓罗、中介者模式、解釋器模式
三季二、設計模式分類總結
寫代碼:可復用檩咱,少修改,易擴展
創(chuàng)建型模式:為了解決對象的創(chuàng)建問題胯舷。
結構型模式:關注對象間的組合刻蚯,關心實體之間是如何互相使用的。
個人思考:具體而言桑嘶,就是如何設計類和類之間的依賴關系炊汹,以更為合適的方式,實現(xiàn)類的對象方法對另一個類實例對象的調(diào)用逃顶。比如讨便,門面模式,就是增加一個接口類以政,匯總子系統(tǒng)的接口霸褒,方便客戶端調(diào)用。適配器盈蛮,改變接口方法废菱,以便擴展應用,讓實現(xiàn)另一種接口的客戶端調(diào)用。裝飾器模式昙啄,增強接口方法等等穆役。
簡而言之,如何更好的使用另一個類梳凛。
行為型模式:對類或對象怎樣交互和怎樣分配職責進行描述耿币。個人理解,所謂分配職責韧拒,可以理解為完成一項工作淹接,或是某個業(yè)務需求,劃分職責分配到類中實現(xiàn)叛溢,這職責的分配模式塑悼,就是行為型的概念