面向复用的软件设计模式(1)——结构模式
复用设计的必要性
- 复用具有成本有效性和及时性。
- 可以通过缩短软件生产周期来提高软件生产效率,使用更少的资源和人力来开发软件。
- 不用耗费资源 “重复地造轮子”(reinvent-the-wheel)。
- 减少了维护成本,可以生产质量更高、更加可靠、效率更高的软件。
- 复用可以产生可靠的软件
- 重用已经存在一段时间并且经过调试的功能是构建稳定子系统的基础。
- 复用产生标准化的软件
- 重用GUI库可在应用程序中产生通用的外观。
- 与常规,连贯的设计保持一致。
- 一个面向复用的设计面对改变更加灵活、已于修复并且易于增加新的功能
三种结构模式
- 适配器模式(Adapter)
- 允许具有不兼容接口的类通过将其自己的接口包装在已存在的类的接口周围来协同工作。
- 装饰模式(Decorator)
- 外观模式(Façade)
适配器模式
意图
- 为了解决类之间接口不兼容的问题或者为已有的类提供新的接口,而将类的接口转换为客户端期望的另一个接口的设计方法。比如现在已经实现了一个类,但是需要的功能的表现形式与这个类中的形式有一些差异,为了复用这个类,可以设计一个Adapter来适配现有的类,使之能够满足要求的形式。这是一种通过添加额外的间接层(Adapter)来解决不协调/不兼容的问题的方法。
适配器模式中的三个角色
- Adaptee:现有的类
- ITarget:现有库中定义的接口
- Adapter:创造的继承自Adaptee的类,同时实现了ITarget接口。调用继承自Adaptee的特殊方法来实现ITarget中定义的方法。
- 几个角色之间的关系如下:

一个适配器模式的例子
public class DogBarkOnce{
protected void barkOnce(){
System.out.println("woof");
}
}
public class Dog{
void bark();
}
public class BarkDog extends DogBarkOnce implements Dog{