更新時(shí)間:2020-07-08 16:15:24 來源:動力節(jié)點(diǎn) 瀏覽2304次
面向?qū)ο?/strong>
面向?qū)ο缶褪且环N思想,把任何事物都看作是一個(gè)對象,把它們之間的關(guān)系抽象成類、繼承。在軟件開發(fā)方面,面向?qū)ο笫侵敢环N程序設(shè)計(jì)范型,同時(shí)也是一種程序開發(fā)的方法。
常見的幾個(gè)方面是,面向?qū)ο?/span>的分析(OOA,Object Oriented Analysis),面向?qū)ο蟮脑O(shè)計(jì)(OOD,Object Oriented Design)、以及面向?qū)ο蟮木幊虒?shí)現(xiàn)(OOP,Object Oriented Programming)。
早期的計(jì)算機(jī)編程都是面向過程的,當(dāng)需要處理的問題越來越復(fù)雜時(shí),面向?qū)ο笏枷刖蛻?yīng)運(yùn)而生了。
在計(jì)算機(jī)語言方面,純面向?qū)ο笳Z言的像Smalltalk在20世紀(jì)70年代出現(xiàn),隨后出現(xiàn)的C++是混合型,90年代出現(xiàn)了Java以及隨后微軟應(yīng)對Java發(fā)表的C#都是面向?qū)ο蟮恼Z言。
面向?qū)ο蟮娜筇匦?/strong>
1、封裝將代碼及其處理的數(shù)據(jù)綁定在一起,隱藏對象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對外提供公共訪問方式,將變化隔離,便于使用,提高復(fù)用性和安全性。Java語言的基本封裝單位是類
2、繼承子類擁有父類的全部特征和行為,這是類之間的一種關(guān)系。提高代碼復(fù)用性;繼承是多態(tài)的前提。Java只支持單繼承。
3、多態(tài)父類中定義的屬性和方法被子類繼承后,可以具有不同的屬性或表現(xiàn)方式。多態(tài)機(jī)制使具有不同內(nèi)部結(jié)構(gòu)的對象可以共享相同的外部接口。提高了程序的拓展性。
設(shè)計(jì)標(biāo)準(zhǔn):高內(nèi)聚與低耦合
內(nèi)聚是指事物內(nèi)部的聯(lián)系緊密程度。在面向?qū)ο缶幊讨校褪菍ο髢?nèi)各元素之間關(guān)系緊密程度。高內(nèi)聚追求的是事物盡量只完成單一功能,以降低事物本身的復(fù)雜程度。
耦合是指事物之間的聯(lián)系緊密程度。在面向?qū)ο缶幊讨校褪菍ο笈c對象之間的關(guān)系緊密程度。低耦合追求的是事物盡量保持自身獨(dú)立。
面向?qū)ο蟮奈宕蠡驹瓌t:
1、單一職責(zé)原則SRP(Single Responsibility Principle)類的功能要單一,僅有一個(gè)引起其變化的原因,提高高內(nèi)聚來減少引起變化的原因。
2、開放封閉原則OCP(Open-Close Principle)一個(gè)軟件實(shí)體應(yīng)當(dāng)對擴(kuò)展開放,對修改關(guān)閉。即軟件實(shí)體應(yīng)盡量在不修改原有代碼的情況下進(jìn)行擴(kuò)展。抽象是關(guān)鍵,封裝可變性。
3、里式替換原則LSP(the Liskov Substitution Principle LSP)所有引用基類(父類)的地方必須能透明地使用其子類的對象,任何時(shí)候都可以用子類型替換掉父類型。這個(gè)原則依賴面向?qū)ο蟮睦^承特性和多態(tài)特性。
4、依賴倒置原則DIP(the Dependency Inversion Principle DIP)抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)當(dāng)依賴于抽象;高層模塊不應(yīng)該依賴低層模塊,兩者都應(yīng)該依賴其抽象。換言之,要針對接口編程,而不是針對實(shí)現(xiàn)編程。
5、接口分離原則ISP(the Interface Segregation Principle ISP)使用多個(gè)專門的接口,而不使用單一的總接口,即客戶端不應(yīng)該依賴那些它不需要的接口。
面向?qū)ο蟮囊粋€(gè)法則與復(fù)用原則
迪米特法則LOD/LKP(Law of Demeter又名Least Knowledge Principle)一個(gè)軟件實(shí)體應(yīng)當(dāng)盡可能少地與其他實(shí)體發(fā)生相互作用。降低類之間的耦合。
合成復(fù)用原則CRP(Composite Reuse Principle)要盡量使用合成和聚合,盡量不要使用繼承。因?yàn)槔^承復(fù)用破壞包裝,子類知道所有父類細(xì)節(jié),而且父類變化總是引起子類變化。
面向?qū)ο蟮乃季S
先整體,再局部
先抽象,再具體
能做什么,再怎么做
以上就是動力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對“全方面了解Java中的面向?qū)ο?rdquo;的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
初級 202925
初級 203221
初級 202629
初級 203743