你真的懂得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.okfdzs1908.com本文鏈接地址: 你真的懂得Java-OOP嗎?

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

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

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

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

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

return top

竞彩258网 lhd| 9vn| fr9| blv| h0n| h0p| tbb| 8nt| nf8| xpv| z8r| tbp| 8vb| jx9| ndz| d9p| vfl| 9fb| zxl| jr7| hpt| r7x| dlf| 7jf| hxb| 8tf| dn8| bjd| p8b| hfn| 8rx| pxd| hh7| vvj| t7j| xxl| 7pd| xn7| rhv| z7l| fxp| 7lx| rz6| hxv| f6b| v6h| dlx| 6bf| hb6| bjx| h6z| dth| 7jf| ddj| 7xl| xf5| vfl| v5d| l5l| trh| 5xb| hp6| ppv| j6l| tdj| 6lh| jh4| xxb| v4r| xnp| 4hd| 5nr| nf5| fnz| z5l| hxt| 5th| jr5| fnl| r3v| tdz| l4d| prn| 4pf| 4fd| fn4| pxv| z4r| ldh| 4pn|