面向对象和面向接口(一)

      面向对象是什么呢?简而言之就是通过软件模拟真实世界的方法,进行程序设计。这点在进行小型程序时候看不出效果,实际上可能反而让人摸不着头脑。对于大型软件设计,优势就会体现出来:由于通过模拟真实世界,我们可以借用真实世界的经验来进行设计。设计思路和上手速度就可能更快(注意是可能,函数式编程的粉丝可能对面向对象不以为意),这在一个强调速度的网络世界是非常重要的。

  举个例子:我们的女性同胞们经常喊出“我要减肥”的口号,当然有些人将口号付诸实践,另外一些人则没有。聪明的开发者看到这个需求,就开始开发一个减肥助手的软件,那么如何开始呢?一个可能的方案是:

  假设应用的开始,有一个真的助手。我们首先告诉他,我们要在多少时间內,减到多少斤,或者减少多少斤。这个助手根据我们的目标,根据一定的减肥理论,目前的食谱或者菜单,运动条件,给出一个减肥计划。每天他都会告诉我们现在该干什么,我们只要按照它的计划,很轻松的就减肥了。(还可以考虑有一些奖励或者惩罚,根据当前的计划执行情况,或者根据当前的计划执行情况进行计划调整等操作)。

假设我们没有应用程序去做这件事,那么一个健身房的健身计划应该如何指定呢?

  1:还一个信息接收者,健身房前台(根据当前的输入设备接收用户输入)。

  2:有一个信息传递人,他知道该把相应的信息传递给谁。

  3:有一个减肥理论家:他知道什么样的目标,应该执行什么样的计划:每天应该消耗多少卡路里,摄入多少卡路里。(他可能只是一个计算器样的东西)。

  4:有一个营养师,他知道一天摄入多少卡路里,并制定菜单。(例如每样食物具有多少热量,以及营养的搭配)

  5:有一个运动计划师,他知道一天消耗多少卡路里,应该指定什么样的运动计划(例如每项运动的卡路里消耗,当然不能只做一项运动,否则人肯定该畸形了)

  6:有一个计划提醒通知者,他会发短信给用户,告诉他该干什么了。

好了,如果是一个应用程序,我们在设计的时候只需要根据上面这个流程设计系统就行了:

  1:应用输入接收器。

  2:message.bus(有notify类似的机制,上面有个什么输入就调用相应模块的listener,进行调用该模块功能),或者业务主逻辑(这种情况下,是按照poll的模型:主逻辑负责主动调用相应的模块)

  3:卡路里计算器。

  4:菜单计算器。(根据配置文件或者默认配置计算每样食物的卡路里和相应的营养,根据营养均衡原则进行枚举或者其他方式得到菜单)

  5: 运行计划器。根据配置文件或者默认配置计算每样运动消耗卡路里和相应的效果,根据运动适当原则得到运动计划。

  6:定时器任务:定期输出提醒信息(根据运动计划和菜单)。

这里,除了6,其余均是只运行一次。

      相信当家已经感受到了,按照面向对象的设计思路能够快速的给出设计思路。

  

 

转载于:https://www.cnblogs.com/zhangsong/archive/2012/09/06/2673071.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值