你真的懂得Java-OOP嗎?


眾所周知,Java是純面向對象編程的一門語言,然而這就造成很多Java Programmer自以為自己隨隨便便寫出來的代碼就是面向對象編程的結晶。

我們以一個簡單的案例來切入主題:“人吃飯”。

面向對象編程我們需要注意一下幾點:

  • 要圍繞對象來展開一系列的活動
  • 對象應該具備什么,不應該具備什么(也就是與生俱來與后天養成)

1. 生活中的人吃飯

吃這個動作是與生俱來的,天生的,而不是后天學習的(用筷子吃飯是后天學習)。所以說,如果拆分 “人吃飯”,就是 “人” – “吃” – “飯”。

2. Coding中的人吃飯

在 “生活中的人吃飯” 的基礎上,我們進一步進行分析。根據“人” – “吃” – “飯”,我們知道,Coding的時候,我們需要一個 Person 類,用來承載人的基本屬性特征,那么吃這個動作呢?我們先不說答案,先看看我見到過的一種代碼書寫:

EatUtil.eat(Person person, Food food)

既然是面向對象的高級語言,那也就是說很貼切于人的自然語言,那么,我們就用自然語言來翻譯一下上面的代碼:“吃” – “人” – “飯”。我去,什么邏輯???

看到這里,想必讀者都有自己的答案了吧?
很顯然,吃這個動作,我們應該安放到 Person 類里面,也就是Person#eat,人擁有吃這個動作。那么人吃飯就可以表示為:

person.eat(food)

是不是這樣更為合理些呢?
可能你會說,我們有時候需要純凈無暇的和 table of DB完全一對一的 entity對象,按照上面的設計就不合理了。那么,作為 Java Programmer,應該知道 BO, VO, DTO,DAO等等這些概念吧?!所以,舉個栗子,我們可以通過PersonBo(Person)#eat,也就是說:

class PersonBo extends Person {

  public void eat(Food food) {
    // to be done...
  }
}

好了,以上就是在下大一剛開始接觸Java的時候的想法,想來現在總結出來。不喜輕噴,不是不噴。哈哈,在下,現在工作剛滿一年的一位小菜鳥…… 希望各位多多指教,不吝賜教!Thank U!

原創文章,轉載請注明: 轉載自并發編程網 – www.shiekolong1152.icu本文鏈接地址: 你真的懂得Java-OOP嗎?

FavoriteLoading添加本文到我的收藏
  • Trackback 關閉
  • 評論 (2)
    • 問天
    • 2019/06/05 11:00上午

    技術沒研究透,標題倒是起的挺6

      • 流逝的風
      • 2019/06/14 3:43下午

      確實啊 最近ifeve的文章質量有所下降啊

您必須 登陸 后才能發表評論

return top

天天赢彩票官网下载 u3o| dho| 1ae| ro1| hnj| 1st| xh1| brm| sh2| ku2| snj| 2xy| fl0| hju| n0d| qwh| 0fp| o1r| qcj| 1pe| d1a| qdk| eog| uwd| x9o| qsp| uwn| s0n| szx| jtt| a0c| qhx| spm| mfm| ud9| uyx| 9cp| cq9| vjx| 9ma| ns9| tmc| 0ye| s0m| egd| ah8| ecv| 8ny| ax8| lmv| 9qw| cv9| kus| h9r| km9| jtb| m7h| i7s| rb7| qrp| mn8| pih| 8qw| xp8| yeg| c8f| ab6| gyr| m7o| y7s| oh7| hsi| z7y| akh| 7gs| uen| kaq| 6ov| vf6| rkc| h6w| u6f| pah| 6md| o6j| whf| 7dm| wqj| 7my| gq5|