众所周知,客户需求的自然形态是**面向过程(或者叫结构化编程)**的。 你在任何项目上,跟业务专家聊需求,你得到的都是先做什么、后做什么;流程、子流程。
至于面向对象,是一种设计方法,并不是所谓最接近现实世界的设计思想,反而是设计师硬凹过来的。只不过现在的程序员上学就学的面向对象,受面向对象训练良久,已经忘了面向过程了。不信你可以把你的类图拿给不懂技术的业务需求方,解释给他们听,问问业务专家脑子里的现实世界是不是这样的。
但面向过程毕竟被淘汰了,而且淘汰是有理由的:
当一个团队多人共同开发一个应用的时候,由于过程之间存在依赖,而每个过程都可以操作任何资源,并且过程和资源的关系不是显式的,这就使不同开发者之间产生互相干扰,而且是隐式的。 因此,随着业务和系统复杂度的提高,和开发团队规模的增加,面向过程只能被淘汰。
面向对象强调行为和数据的封装。某种角度来说,相当于说我的资源只有我能碰,你不许碰,你的资源只有你能动,我也不碰。 我们之间只能通过公开的接口(或消息)来交互。 从类比的角度看,一个微服务有点像面向对象的宏观体现。 其内部数据(聚合)只允许本服务自己操作,