面向?qū)ο蟮娜筇匦裕悍庋b、繼承和多態(tài)。這是任何一本面向?qū)ο笤O(shè)計(jì)的書里都會(huì)介紹的,但鮮有講清楚的,新手看了之后除了記住幾個(gè)概念外,并沒(méi)真正了解他們的意義。前幾天在youtube上看了Bob大叔講解的SOLID原則,其中有一段提到面向?qū)ο蟮娜筇匦裕斋@很多,但是我并不完全贊同他的觀點(diǎn),這里談?wù)勎业南敕ǎ?/p>
創(chuàng)新互聯(lián)是專業(yè)的永順網(wǎng)站建設(shè)公司,永順接單;提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行永順網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!封裝
『封裝』第一層含義是信息隱藏。這是教科書里都會(huì)講解的,把類或模塊的實(shí)現(xiàn)細(xì)節(jié)隱藏起來(lái),對(duì)外只提供最小的接口,也就是所謂的『最小知識(shí)原則』。有個(gè)共識(shí),正常的程序員能理解的代碼在一萬(wàn)行左右。這是指在理解代碼的實(shí)現(xiàn)細(xì)節(jié)的情況下,正常的程序員能理解的代碼的規(guī)模。比如一個(gè)文件系統(tǒng),F(xiàn)AT、NTFS、EXT4和YAFFS2等,它們的實(shí)現(xiàn)是比較復(fù)雜的,少則幾千行代碼,多則幾萬(wàn)行,要理解它們的內(nèi)部實(shí)現(xiàn)是很困難的,但是如果屏蔽它們的內(nèi)部實(shí)現(xiàn)細(xì)節(jié),只是要了解它們對(duì)外的接口,那就非常容易了。
關(guān)于『封裝』的這一層含義,Bob大叔提出了驚人的見解:『封裝』不是面向?qū)ο蟮奶匦?,面向過(guò)程的C語(yǔ)言比面向?qū)ο蟮腃++/Java在『封裝』方面做得更好!證據(jù)也是很充分:C語(yǔ)言把函數(shù)的分為內(nèi)部函數(shù)和外部函數(shù)兩類。內(nèi)部函數(shù)用static修飾,放在C文件中,外部函數(shù)放在頭文件中。你完全不知道內(nèi)部函數(shù)的存在,即使知道也沒(méi)法調(diào)用。而像在C++/Java中,通過(guò)public/protected/private/friend等關(guān)鍵字,把函數(shù)或?qū)傩苑殖刹煌牡燃?jí),這把內(nèi)部的細(xì)節(jié)暴露給使用者了,使用者甚至可以繞過(guò)編譯器的限制去調(diào)用私有函數(shù)。所以在信息隱藏方面,『封裝』不但不是面向?qū)ο蟮奶匦?,而且面向?qū)ο鬁p弱了『封裝』。
『封裝』的第二層含義是把數(shù)據(jù)和行為封裝在一起。我覺得這才是面向?qū)ο笾械摹悍庋b』的意義所在,而一般的教科書里并沒(méi)提及或強(qiáng)調(diào)。面向過(guò)程的編程中,數(shù)據(jù)和行為是分離的,面向?qū)ο蟮木幊虅t是把它們看成一個(gè)有機(jī)的整體。所以,從這一層含義來(lái)看,『封裝』確實(shí)是面向?qū)ο蟮摹禾匦浴弧?/p>
面向?qū)ο笫且环N思維方式,而不是表現(xiàn)形式。在C語(yǔ)言中,可以實(shí)現(xiàn)面向?qū)ο蟮木幊?,事?shí)上,幾乎所有C語(yǔ)言開發(fā)的大型項(xiàng)目,都是采用了面向?qū)ο蟮乃枷腴_發(fā)的。把C語(yǔ)言說(shuō)成面向過(guò)程的語(yǔ)言是不公平的,是不是面向?qū)ο蟮木幊讨饕强粗笇?dǎo)思想,而不是編程語(yǔ)言。你用C++/Java可以寫面向過(guò)程的代碼,也可以用C語(yǔ)言寫面向?qū)ο蟮拇a。
繼承
類就是分類的標(biāo)準(zhǔn),也就是一類事物,一類具有相同屬性和行為對(duì)象的抽象。比如動(dòng)物就是一個(gè)類,它描述了所有具有動(dòng)物這個(gè)屬性的事物的集合。狗也是一個(gè)類,它具有動(dòng)物所有的特性,我們說(shuō)狗這個(gè)類繼承了動(dòng)物這個(gè)類,動(dòng)物是狗的父類,狗是動(dòng)物的子類。在C語(yǔ)言中也可以模擬繼承的效果,比如:
struct Animal { ... };
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。