面向对象与面向过程小结

大话设计模式中,讲到了“超模大赛”,“面向对象”先生,一登台就从oo的诞生开始,最后讲到了“面向对象”。接触面向对象有一段时间了,但还没有真正从实践中领悟到他。

下面参照一个经典五子棋例子,认识认识他的........

概述分析:

面向过程:分析出解决问题所需要的步骤,用函数步骤一步一步的实现。                      

面向对象:建立对象,定义它的责任,履行责任,不是为了完成一个步骤。

实例分析

五子棋

用面向过程思路:

             发问:------“你先告我,步骤是什么?”

           1.开始 2.黑棋先走3.记录棋局4.判断胜负5.白棋走6.记录棋局7.判断胜负8.返回步骤2

面向对象思路:

             发问----------”你先告我,都有谁啊?从哪里来的?都是干啥的?“

                 对象1,棋子双方

                 对象2.棋盘系统,负责记录棋局

                 对象3.规则系统,负责判定输赢,和监督游戏规则

                 对象1负责执行用户操作,然后告诉对象2去记录棋局,显示变化;对象3负责游戏中监督,和对棋                  局胜负的判断


假如1:加入悔棋功能,对于面向过程,可能会对一连串的步骤进行改动,这就更改了业务流程,需要大规模调整。

                     对于面向对象,只要将对象2改动就行了,不用担心前后的逻辑判断,改动只是局部的。

                     这就避免了业务流程的改变,是系统可以扩展。

假如2:改为围棋游戏,面向过程恐怕,要将全部的业务流程进行改变,因为,每一步都有五子棋的身影。

                     面向对象,则可以只将对象1稍作改动,将对象3的规则进行改动,下棋的大致步骤都没有变                        化。

可以看出:

面向对象是以功能划分问题,而不是步骤。

从面向过程到面向对象,其实就是为了应对需求的复杂化。

    总结:面向对象中表面看每个步骤中只有一个入口,一个接口,当出现了两个假如时,要不去更改其中一个步骤,但这个步骤可能会关联多少个数据,怎么办?要不就更改整个业务流程,要知道,整个改变流程这会付出很大的代价!而面向对象,将可能的变化封装起来,独善其身,使变化不至于产生太大影响。

    

你可能感兴趣的:(软件设计)