《写给大家看的面向对象编程书》总结&&实践(2)

如何以对象方式思考

OO设计所期望的最终结果是一个健壮、功能完备的对象模型,换句话说,也就是一个完备的系统。

将会讨论以下几个问题:

  • 了解接口和实现之间的区别
  • 以更抽象的方式思考
  • 尽可能为用户提供最小接口

了解接口和实现之间的区别

在设计类时,必须了解用户需要知道什么以及用户不需要知道什么。

适当的构造类分为两个部分设计—-接口和实现

接口

在最理想的情况下,应该只为最终用户提供他们所需要的服务。

明确用户
在设计一个类时,也许最重要的就是明确类的受众或用户。

实现

实现的细节对用户是隐藏的。需要记住的一个实现的目标:改变实现不需要同时改变用户的代码。

接口/实现示例

根据需求提供相应的接口,例如一个简单的数据库读取器:

DataBaseReader类的一个UML类图

公共接口
如果一个方法是公共的,应用程序员就可以访问它,因此,它可以认为是类接口的一部分。

对象持久性
是指保存对象的状态,从而可以在以后恢复并使用。没有持久存储的对象一旦出了作用域实际上就已经死亡了。例如可以把对象的状态保存在数据库中。

设计接口是使用抽象思维

抽象接口通常是实现一个优秀可重用OO设计所采用的做法。

尽可能为用户提供最小接口

要做到这一点,需要遵守以下规则:

  • 只为用户提供他们确实需要的东西
  • 最好是当用户确实需要时才增加接口,而不要为用户提供他们不需要的接口
  • 公共接口定义用户能够访问的信息
  • 用用户角度设计类,而不要从信息系统的角度进行设计
  • 确保设计类时将与真正使用这个类的人(不只是开发人员)反复考虑需求和设计

小结

关于OO思维过程的问题并不是固定的,采用OO方式做事与其说是一门科学不如说是一门艺术。你可以用自己的方式来描述OO思维。