如何理解面向对象思维?

一:什么是面向对象思维?

所谓面向对象,即是将现实中错综复杂的对象,抽丝剥茧,变成一个个最小的单元。要使用时,再通过封装组合的方式,组成一个个业务对象,从而映射出复杂的现实对象。比如DTO业务对象,映射出的是一个业务对象,但是DTO可能是由多个最小单元构成的,而这些最小单元,则可以存储在不同的数据库表里。

面向对象有三个特性:封装,继承以及多态可以理解为这三个特性都一定程度上解决“抽象”问题。比如封装,把一个人,手,脚,头等都可以看成是一个对象,但是业务上就应该输出一个人DTO,则可以把手,脚,头等各个部分封装组合成一个人DTO;又或者把人的各个行为,如吃饭,走路等行为封装起来,最后向外提供一个人dto,内部细节完全屏蔽掉。至于继承,拓展子类,一定程度上也是屏蔽了子类的内部细节。通过多态,抽象的程度更高了甚至单从外部调用来说,都不知道调用的是哪个子类的方法。

二:如何使用面向对象思维

面向对象分析问题,关注点在抽象角度。比如一个勺子,用面向对象的思维去分析就是从材料这个角度,从用途这个角度,从形状这个角度等等去分析。而另一种思维方法,面向过程的关注点则是具体的实现。比如一个dto有多少个对象组成,每个对象有什么方法都是属于面向对象的思维。当真正去实现具体对象的具体方法时,就是使用面向过程的方法去实现,比如第一步该做什么,第二步该做什么等等(值得一提的是,我认为画流程图就是一种面向过程的思维,而画思维导图,则是一种面向对象+面向过程的思考方式)

更具体一点的例子就是,比如当要设计一个工单与工单事件业务对象。对于工单来说,可以从三个角度进行思考,比如工单的记录,流转以及跟踪。如记录(工单的行为操作)则可以通过设计更新人,更新时间,创建人三个字段去实现。而流转则可以通过保存一个当前工单事件来实现,而跟踪则可以设计一个流程节点,流程编码,工单号,工单状态来实现。这样就通过面向对象的思维完成了对工单业务的需求分析和设计

三:为什么需要面向对象思维

使用面向对象的思维去分析问题,实际就是一个抽象业务,分解问题规模的过程。更贴切地说,就类似通过思维导图的方式,一个层次,一个角度地去分析问题。通过这种方法,可以让需求更加清晰,让设计出来的程序扩展性更强。比如要想实现一个Web浏览器可能需要2000个过程,但是使用面向对象的方法设计,可能只需要100个类,一个类需要20个方法。(找bug也更容易找)。但是如果是一些问题规模比较小的场景,使用面向过程的设计将会更加方便(比如写一些算法)

四:如何锻炼面向对象思维

我认为抽象是面向对象的核心,面向对象是抽象的一种实现方式。所谓抽象,即抽离具象事物的一般特征,通俗地说是取其不变的东西,弃其变化的东西。即简化问题,抓住问题的本质。比如上述例子的工单,不变的是工单的记录,流转以及跟踪,但是工单的具体行为操作,具体的流转情况,每一张工单都是不同的。因此,想要锻炼面向对象的思维,首先得锻炼抽象能力。而锻炼抽象能力,主要还得通过画图来锻炼,比如思维导图,类图,实体图,架构图等。通过看书也可以锻炼抽象能力,因为书本的文体是抽象的,一千个读者就有一千个哈姆雷特(视频却刚好相反)

       

追更:

面向对象与面向过程的本质区别:

面向对象的关注点的抽象角度,所以面向对象主要是用来解决规模大而复杂的现实问题,对业务进行建模的一种思维方法;而面向过程的关注点是具体的实现,所以该思想方法主要是解决规模比较小的显示问题。比如一个浏览器的功能,假设一共有3000多个功能,但是通过面向对象的思维方法,可能分析后是从20个角度,每个角度进一步划分,平均一个角度是150个功能,这比直接通过面向过程的方法简单了不少。但是我认为面向对象的最终都是需要面向过程的,比如一个方法的抽象,最终还是需要落地实现的、而实现具体方法的过程,使用的就是我们的面向过程的思维(甚至画流程图就是一种面向过程的分析方法)

=====================================================================

最后:附上后端技术交流圈,欢迎各位大佬入圈交流技术......V:ff1341658(先添加好友后拉群,添加好友时请备注:小白不黑)

============================================================

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值