OO设计中对象的创建和使用(三)

来源:互联网 发布:淘宝上有卖电棍的吗 编辑:程序博客网 时间:2024/04/29 23:05
在设计中,实体这个概念有不同的视角,每个视角表现为某一类操作的内聚。而内聚为认是设计的传统美德,因为强内聚的实体容易被理解,更少的藕合,更好的粒度,更容易测试。

  如果我们努力使实体的操作呈现出更清晰的视角,我们就改进了内聚性,包括状态的内聚、功能的内聚、职责的内聚,这将给我们带来很多的好处。

  划分使用视角和创建视角可以有效的提升内聚性。这么作也意味有一个内聚的实体负责创建工作,一般是工厂类,同样的,我们也不需要关心它如果和使用相结合,最后实现整体的功能。

  实际上,在我们设计中,掌握这些原则意味着用各种使用关系来确定各种工厂类,工厂类则专注于实例的创建(可以参考一些知名的创建模式)

  在《设计模式精解》一书中,Alan Shalloway and James Trott描述了这样一种观点"根据上下文设计",其中,他们说,一个设计的某些方面形成了一段上下文,通过这样的上下文可以推导出设计的其它部分。这是一个比较宏观的概念,这个概念意味着模式在设计、分析和实现中所扮演的角色,不过论题的关键是这样的:
 
  在我的某个项目中,我施展我的设计才华。我发现我一惯的作法几乎是不经意的,在我关注我的对象是什么之前,我从不关心它如果被实例化。我假设它们已经存在,而把注意力转移到对象之间的关系上。我假设只要时机到了,对象就会被顺理成章的创建。

  随后,他们总结一个更有力的设计原则:

  原则:先认真考虑系统的需要,再考虑如何实现它。

  划分创建和使用,就是有效的支持了这一原则,因此也带来了很多优势。系统的内聚性会更强,可扩展性和灵活性会更好,维护将会变的相当的简单。

  经常会发现一项好的技术会改进另一项好的技术,形成强强联手。

  例如,测试驱动开发期望编写的类有更好的可测试性(通过前期关注测试),这也意味更强的内聚性,更好的粒度,等等。。。分离使用和创建的原则可以带来更优的可测试性,你可以分别测试它们,你可以放入一个假的对象来消除依赖性,使测试工作更容易。

  设计模式也是这种观点的支持者。其中最值得称道的是"通过抽象隐藏变化"和"开放封闭原则"这些都给我们带来了很多改善。

  然而,使用对象不需要知道对象的类型(知道的仅仅是抽象),然后另外再关注创建的问题。这就产生了工厂类,这就很自然把客户对象从复杂问题中分离出来。

  我们正在建立自己的专业特点,我们搜寻各种有价值的特性、原则、实践方法和模式。以些形成我们智慧的基础。

  寻找这些思想,和我们现有的思想集成,我们将更成功。给我们的客户、公司文化和经济方面都能增添价值。这也能帮助我们更好的沟通和协作,建立一个鼓励创新的团队气氛。

  最后,我们所作的工作会更有趣。我相信这是一条正确的道路。