2019/12/24 | 在校大二上學期 | 太原科技大學 初學java後,我們會發現java難點不在於Java語法難學,而是把我們掛在瞭如何設計類的“弔繩”上了。這恰恰也是小白與入職多年的程式員的的差距之一。所以今天來分享一下我的觀點: 那麼如何設計類呢?有沒有遵循的原則可言呢?答案呢,就是下麵的 ...
2019/12/24 | 在校大二上學期 | 太原科技大學
初學java後,我們會發現java難點不在於Java語法難學,而是把我們掛在瞭如何設計類的“弔繩”上了。這恰恰也是小白與入職多年的程式員的的差距之一。所以今天來分享一下我的觀點:
那麼如何設計類呢?有沒有遵循的原則可言呢?答案呢,就是下麵的敘述!
面試官:“請你用C++/java/Python等語言以面向對象的方式,設計一個在console上運行的計算器。”
面試者埋頭10分鐘,寫出了實現計算器功能的程式。 這裡呢,程式就不往上弄了。但是小鳥寫的程式大概是這樣子的:一個class、一個main方法和一連串的代碼,從頭到尾就有一個類和一個主方法。但是這不利於後期運維,並且可拓展性很差。
所以,分"類"設計實現功能分裝變得尤為重要。設計思路如下:
計算器最基本的功能為 :+ - * / 。可以將加減乘除分別寫一個類,都去繼承Operation類(父類)。那麼如何給用戶一個給好的操作方法呢?那麼就得在設計一個類(OperationCompany類)。而這個類比較特殊,主要負責用戶輸入什麼運算,就new 什麼對象。 什麼意思呢? 比如說,用戶想實現乘法這個運算,那麼在用戶輸入乘號*後,這個類的方法就會以乘法類為模板,new一個乘法類對象出來,從而去調用乘法的類方法。這種模式叫做簡單工廠原則。
其中,加減乘除分開設計就體現了封裝這一特性,而Operation(父類)的子類(加減乘除)就體現了子類的多態性。俗稱“一龍生九子,九子各不同”,正是這個道理;而子類繼承父類Operation類是繼承所在。所以在編程中邊品邊思考,才會信手拈來高質量的代碼行。
轉載註明出處: https://www.cnblogs.com/TreasureBoy-blog/