对象导论 1.3 每个对象都提供服务

1.3 每个对象都提供服务

       当正在试图开发或者理解一个程序设计时,最好的方法之一就是将对象想像为“ 服务提供者 ”。程序本身将向用户提供服务,它将通过调用其他对象提供的服务来实现这一目的。你的目标就是去创建(或者最好是再现有代码中寻找)能够提供立项的服务来解决问题的一系列对象。

       着手从事这件事的一种方式就是问一下自己:“ 如果我卡伊将问题从表象中抽取出来,那么什么样的对象可以马上解决我的问题呢? ”,例如,假设你正在创建一个薄记系统,那么可以想象,系统应该具有某些包括了预定义的薄记输入屏幕的对象,一个执行薄记计算的对象集合,以及一个处理在不同 的打印支票和开发票的对象。也许上述对象中的有些已经存在了,但是那些并不存在的对象,它们看起来像什么样子?它们能够提供哪些服务?它们需要哪些对象才能履行它们的义务?如果持续这样做,那么最终你会说“ 那个对象看起来很简单,可以坐下来写代码了 ”,或者会说 “ 我肯定那个对象已经存在了 ” 。这是将问题分解为对象集合的一种合理方式。

       将对象看作是服务提供者还有一个附带的好处:它有助于提高对象的内聚性。高内聚是软件设计的基本质量要求之一:这意味着一个软件构件(例如一个对象,当然它也有可能是指一个方法或一个对象库)的各个方面“ 组合 ”得很好。人们在涉及对象时所面临的一个问题是,将过多的功能都塞在一个对象中。

      例如,检查打印模式的模块中,你可以这样设计一个对象,让它了解所有的格式和打印技术。你可能会发现,这些功能对于一个对象来说太多了,你需要的是三个甚至更多个对象,其中,一个对象可以是所有可能的支票排版的目录,它可以被用来查询有关如何打印一张支票的信息;另一个对象(或对象集合)可以是一个通用的打印接口,它知道有关所有不同类型的打印机的信息(但是不包括任何有关薄记的内容,它更应该是一个需要购买而不是自己编写的对象);第三个对象通过调用另外两个对象的服务来完成打印任务。这样,每个对象都有一个它所能提供服务的内聚的集合。在良好的面向对象对象设计中,每个对象可以很好地完成一项任务,但是它们并不视图做更多的是。就像在这里看到的,不仅允许通过购买获得某些对象(打印机接口对象),而且还可以创建能够在别处复用的新对象(支票排版目录对象)。

      将对象作为服务提供者看待是一件伟大的简化工具,这不仅在设计过程中非常有用,而且当其他人视图理解你的代码或重用你的代码或重用某个对象时,如果他们看出了这个对象能提供的服务的价值,它会使调整对象以适应其设计的过程变得简单得多。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值