怎样使用设计模式
(本文摘自《设计模式-可复用面向对象软件的基础》)
一旦你选择了一个设计模式,你怎么使用它呢?这里给出一个有效应用设计模式的循序渐进的方法。
- 大致浏览一遍模式。特别注意其适用性部分和效果部分,确定它适合你的问题。
- 回头研究结构部分、参与者部分和协作部分。确保你理解这个模式的类和对象以及它们是怎样关联的。
- 看代码示例部分,看看这个模式代码形式的具体例子。研究代码将有助于你实现模式。
- 选择模式参与者的名字,使它们在应用上下文中有意义。设计模式参与者的名字通常过于抽象而不会直接出现在应用中。然而,将参与者的名字和应用中出现的名字合并起来是很有用的。这会帮助你在实现中更显式的体现出模式来。例如,如果你在文本组合算法中使用了strategy模式,那么你可能有名为SimpleLayoutStrategy或TeXLayoutStrategy这样的类。
- 定义类。生命它们的接口,建立它们的继承关系,定义代表数据和对象引用的实例变量。识别模式会影响到的你的应用中存在的类,做出相应的修改。
- 定义模式中专用于应用的操作。这里再一次体现出,名字一般依赖于应用。使用与每一个操作相关联的责任和写作作为指导。还有,你的名字约定要一致。例如,可以使用“Create”前缀同意标记Factory方法。
- 实现执行模式中责任和写作的操作。实现部分提供线索指导你进行实现。代码示例部分的例子也能提供帮助。
这些只对你一开始使用模式起指导作用。以后你会有自己的设计模式使用方法。
关于设计模式,如果不提一下它们的使用限制,那么关于怎样使用它们的讨论就是不完整的。设计模式不能够随意使用。通常你通过引入额外的间接层次获得灵活性和可变性的同时,你也使设计变得更复杂并/或牺牲了一定的性能。一个设计模式只有当它提供的灵活性是真正需要的时候,才有必要使用。当衡量一个模式的得失时,它的效果部分是最能提供帮助的,如表1-2所示。