意图:将抽象部分与它的实现部分分离,使它们都可以独立地变化。将一组实现部分从另外一组使用它们的对象中分离出来。
问题: 一个抽象类的派生类必须使用多种实现部分,但不能够引起数量上的爆炸。
解决方案:为所有的实现部分定义一个接口,让抽象类的所有派生类都使用找个接口。
参与者与协作者: Abstraction为正在实现的对象定义接口。Implementor为特定的实现部分类定义接口。Abstraction的派生类使用Implementor的派生类,而不必知道子集使用的特定ConcreteImplementor
效果:“实现部分与使用它的对象的分离”增加了灵活性,客户对象不需要了解实现问题。
实现:将实现部分风装在一个抽象类中。在被实现的抽象部分基类中包含一个实现部分基类的句柄。
适用范围:
在创建设计以处理变化的过程中,应该遵循两条基本策略:
(1) 发现并封装变化点。
(2) 优先使用对象组合,而不是类继承。
意图:可以在独立的类中包含变化点,从而使未来的变化不会影响现在的代码。将所有的变化点都包含在自己的抽象类中,然后观察抽象类彼此之间如何发生关联。
设计过程:
(1) 识别出“什么发生变化”。
(2) 描述出现的特定变化。
1万+

被折叠的 条评论
为什么被折叠?



