你真的懂得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!

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 你真的懂得Java-OOP吗?

  • Trackback 关闭
  • 评论 (3)
    • 问天
    • 2019/06/05 11:00上午

    技术没研究透,标题倒是起的挺6

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

      确实啊 最近ifeve的文章质量有所下降啊

    • a
    • 2022/02/14 8:59下午

    ,aji

return top