面向过程设计 VS 面向对象设计

需求

假设你在一个会议上担当讲师,听课的人在课后还要去听其他课程,但他们不知道下一堂课的地点,你的责任就是,确保大家都知道下一节课去哪里上。

针对这个需求, 先来看下结构化方法的分析过程:首先获取听课人的名单,其次,对于名单上的每个人,讲师需要做如下事情:

  1. 找到他要听的下一堂课
  2. 找到该课程的听课地点
  3. 找到从你的教室到下一唐课的路线
  4. 告诉这个人怎么

对于这个分析过程,我们可以发现,当听课的人很多时,讲师会忙不过来的,导致这个问题的原因在于讲师承担了所有责任。知道了问题的症结所在,我们就可以对症下药了,即可以将讲师的责任分摊给学生。例如:在教室的门口贴一张地图,标出每个教室的位置和路线;告诉大家,下课后大家自己去看门口地图,找下一节课的位置。在这个过程中,讲师只需要对学生发出一个"笼统"的指令:去下一个教室,但是不用关系具体的细节。

除了上面这个优点之外,面向对象设计还有没有其他优点呢?答案是有!!还是上面那个栗子,只是需求内容发生了一点点变化:听课的学生中还有研究生助教,他们需要把本节课的反馈收集一下,先交给会议办公室,然后再去下一个教室。

对于这个变更需求,结构化的分析方法需要修改控制程序,即需要区分是研究生学生还是普通学生。而对于面向对象设计,根本不需要区分哪类学生,这是对学生这个抽象概念说:gotoNextRoom()。

总结

面向对象设计相比于面向过程设计的优点:

  1. 职责转移:把职责划分到合适的类中去,例如:将讲师的职责划分到学生中;把细节封装起来,例如:将讲师要做的具体细节封装到学生类中。
  2. 只对接口进行操作,例如:gotoNextRoom()。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第0章 引言 如今的互联网世界里,很多产品的体验和业务流程,可能都会变得越来越同质化,越来越差异不大。于是,决定一...
    添宝老师阅读 3,928评论 2 60
  • 各个领域都有要学习的标杆对象 三星的管理层很早就认识到,要想完善自己的不足和缺陷,最直接的方法就是向标竿企业学习,...
    周明达老师阅读 869评论 0 7
  • 这个扇面好喜欢,我觉的很好了,妈妈说不太满意。扇面不吸色,又给我画了另外一个美丽的鹿。
    瞧瞧秀木阅读 1,070评论 0 6
  • 故事的主角秋晓是充满汉子力量和女人味的女fu子po,《女人花》是最适合秋晓的一首歌。 ...
    氧气姑娘666阅读 620评论 0 0