众所周知,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!
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/60384.html