初學(xué)java后,我們會(huì)發(fā)現(xiàn)java難點(diǎn)不在于Java語(yǔ)法難學(xué),而是把我們掛在了如何設(shè)計(jì)類的“吊繩”上了。這恰恰也是小白與入職多年的程序員的的差距之一。所以今天來(lái)分享一下我的觀點(diǎn):
? ? 那么如何設(shè)計(jì)類呢?有沒(méi)有遵循的原則可言呢?答案呢,就是下面的敘述!
? ? 面試官:“請(qǐng)你用C++/java/Python等語(yǔ)言以面向?qū)ο蟮姆绞?,設(shè)計(jì)一個(gè)在console上運(yùn)行的計(jì)算器?!?/p>
? ? 面試者埋頭10分鐘,寫(xiě)出了實(shí)現(xiàn)計(jì)算器功能的程序。 這里呢,程序就不往上弄了。但是小鳥(niǎo)寫(xiě)的程序大概是這樣子的:一個(gè)class、一個(gè)main方法和一連串的代碼,從頭到尾就有一個(gè)類和一個(gè)主方法。但是這不利于后期運(yùn)維,并且可拓展性很差。
? ? 所以,分"類"設(shè)計(jì)實(shí)現(xiàn)功能分裝變得尤為重要。設(shè)計(jì)思路如下:
? 計(jì)算器最基本的功能為 :+ - * / 。可以將加減乘除分別寫(xiě)一個(gè)類,都去繼承Operation類(父類)。那么如何給用戶一個(gè)給好的操作方法呢?那么就得在設(shè)計(jì)一個(gè)類(OperationCompany類)。而這個(gè)類比較特殊,主要負(fù)責(zé)用戶輸入什么運(yùn)算,就new 什么對(duì)象。 什么意思呢? 比如說(shuō),用戶想實(shí)現(xiàn)乘法這個(gè)運(yùn)算,那么在用戶輸入乘號(hào)*后,這個(gè)類的方法就會(huì)以乘法類為模板,new一個(gè)乘法類對(duì)象出來(lái),從而去調(diào)用乘法的類方法。這種模式叫做簡(jiǎn)單工廠原則。
? ? 其中,加減乘除分開(kāi)設(shè)計(jì)就體現(xiàn)了封裝這一特性,而Operation(父類)的子類(加減乘除)就體現(xiàn)了子類的多態(tài)性。俗稱“一龍生九子,九子各不同”,正是這個(gè)道理;而子類繼承父類Operation類是繼承所在。所以在編程中邊品邊思考,才會(huì)信手拈來(lái)高質(zhì)量的代碼行。