C++中類(lèi)的分層設計(純虛函數)
就假設我們要實(shí)現一個(gè)比較簡(jiǎn)單的校園人類(lèi),假設已經(jīng)存在了一個(gè)人的基類(lèi)(Base),那么學(xué)校的人存在很多的特征,但是我認為主要分成了3大類(lèi),主要是學(xué)生、教師、服務(wù)人員,因此可以再基類(lèi)的基礎上派生出三個(gè)抽象類(lèi),Studtent, Teacher, Service,就如同上面的抽象類(lèi)1,抽象類(lèi)2,抽象類(lèi)3。這時(shí)候設計一個(gè)實(shí)際的派生類(lèi)也就減小了很多的冗余。但是我們覺(jué)得還是會(huì )存在很多的相似之處,比如學(xué)生類(lèi)而言,還是可以再分,可以分為男女,這樣分并不是最好的,我們實(shí)際上可以按照專(zhuān)業(yè)分,這時(shí)候又可以再Student的基礎上派生出不同的學(xué)生專(zhuān)業(yè)抽象類(lèi),在各個(gè)專(zhuān)業(yè)下又可以分為博士、研究生、大學(xué)生抽象類(lèi),在這些抽象類(lèi)的基礎上還可以分為男女抽象類(lèi),到這時(shí)就可以直接完成具體每一個(gè)派生類(lèi)的實(shí)現啦,這時(shí)候的直接基類(lèi)就是男女學(xué)生抽象類(lèi),這樣就形成了一個(gè)多層次的分解問(wèn)題,將一個(gè)大的問(wèn)題分解成了很多的子類(lèi),在子類(lèi)的基礎上在分成更細的子類(lèi),最后到達一個(gè)精細的抽象子類(lèi),這時(shí)實(shí)現一個(gè)具體的派生類(lèi)就會(huì )非常的方便。也就減少了很多的冗余代碼,雖然設計的類(lèi)更多了,但是實(shí)現的方式會(huì )更加的容易。所以說(shuō)分層設計的思想是一個(gè)重要的思想,分層就能將一個(gè)大問(wèn)題逐步喜歡,而在C++中純虛函數(抽象類(lèi))的運用就能夠巧妙的解決這種多層次設計問(wèn)題。所以說(shuō)我們的分層設計不僅僅只是單一層的,也可以是多層次的。如下圖所示:

因此我們應該掌握C++中這種純虛函數的用法,只有掌握了這種設計方法才能實(shí)現更加漂亮的類(lèi)設計。當然上面只是我的一些遐想。具體的實(shí)現過(guò)程還需要在經(jīng)后的實(shí)踐中練習。在類(lèi)的設計中多增加抽象類(lèi)能夠簡(jiǎn)化類(lèi)的冗余度,使得類(lèi)能更加方便的被繼承。從上面的結果我們可以將分層設計看做一個(gè)樹(shù)形結構,基類(lèi)就是樹(shù)的根,而實(shí)際的派生類(lèi)是就是葉,而那些中間的抽象層就是節點(diǎn)。本文引用地址:http://dyxdggzs.com/article/201612/324491.htm
評論