面向对象葵花宝典:思想、技巧与实践(36) - 设计原则如何用?
經(jīng)過(guò)前面深入的闡述,SOLID的原則我們已經(jīng)基本上講清楚了,但如果想熟練的應(yīng)用SOLID原則,僅僅知道SOLID是什么(what)還不夠,我們還需要知道SOLID原則在什么時(shí)候和什么場(chǎng)景應(yīng)用(when或where)。
?
幸運(yùn)的是,SOLID原則的5個(gè)獨(dú)立原則在實(shí)際應(yīng)用中基本上都是獨(dú)擋一面,并不會(huì)在某個(gè)地方需要同時(shí)從可選的幾個(gè)原則中挑選一個(gè)最優(yōu)的原則來(lái)應(yīng)用,這樣大大降低了我們應(yīng)用SOLID原則的難度。
?
SOLID原則具體的應(yīng)用場(chǎng)景如下:
- SRP原則:用于類的設(shè)計(jì)
當(dāng)我們想出一個(gè)類,或者設(shè)計(jì)出一個(gè)類的原型后,使用SRP原則核對(duì)一下類的設(shè)計(jì)是否符合SRP要求。
?
- OCP原則:總的指導(dǎo)思想
OCP原則是一個(gè)總的指導(dǎo)思想,在面向?qū)ο蟮脑O(shè)計(jì)中,如果能夠符合LSP/ISP/DIP原則,一般情況下就能夠符合OCP原則了。
除了在面向?qū)ο蟮能浖O(shè)計(jì)中外,OCP也可以用于指導(dǎo)系統(tǒng)架構(gòu)設(shè)計(jì),例如常見(jiàn)的CORBA、COM協(xié)議,其實(shí)都可以認(rèn)為是OCP原則的具體應(yīng)用和實(shí)現(xiàn)。
?
- LSP原則:用于指導(dǎo)類繼承的設(shè)計(jì)
當(dāng)我們?cè)O(shè)計(jì)類之間的繼承關(guān)系時(shí),使用LSP原則來(lái)判斷這種繼承關(guān)系是否符合LSP要求。
?
- ISP原則:用于指導(dǎo)接口的設(shè)計(jì)
ISP原則可以認(rèn)為是SRP原則的一個(gè)變種,本質(zhì)上和SRP的思想是一樣。SRP用于指導(dǎo)類的設(shè)計(jì),而ISP用于指導(dǎo)接口的設(shè)計(jì)。
?
- DIP原則:用于指導(dǎo)類依賴的設(shè)計(jì)
當(dāng)我們?cè)O(shè)計(jì)類之間的依賴關(guān)系時(shí),可以使用DIP原則來(lái)判斷這種依賴是否符合DIP原則。
DIP原則和LSP原則相輔相成:DIP原則用于指導(dǎo)抽象出接口或者抽象類,而LSP原則指導(dǎo)從接口或者抽象類派生出新的子類。
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀
總結(jié)
以上是生活随笔為你收集整理的面向对象葵花宝典:思想、技巧与实践(36) - 设计原则如何用?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 不要重复发明轮子:C++重用的5重境界
- 下一篇: 关于面向对象的的设计原则的使用