你真的懂得Java-OOP吗?

2018/04/21   

众所周知,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!


一个正在技术专家成长道路上不断努力前进的程序员

(转载本站文章请注明作者和出处 buildupchao

Post Directory