结构型 | 1.适配器模式

适配器模式

1.模式定义:

  • 适配器模式(Adapter Pattern) :将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作。
  • 适配器模式既可以作为类结构型模式,也可以作为对象结构型模式
  • 定义中所提及的接口是指广义的接口,它可以表示一个方法或者方法的集合

2.模式结构:

适配器模式包含如下角色:

  • Target:目标抽象类
  • Adapter:适配器类
  • Adaptee:适配者类

1)类适配器:

结构型 | 1.适配器模式_第1张图片

2)对象适配器

结构型 | 1.适配器模式_第2张图片

3. 模式分析

典型的类适配器示例代码:

//适配器,类适配器
public class Adapter extends Adaptee implements Target {
    public void request() {
        super.specificRequest();
    }
}
//适配器,对象适配器
public class Adapter extends Target {
    private Adaptee adaptee; //维持一个对适配者对象的引用
	
    public Adapter(Adaptee adaptee) {
        this.adaptee=adaptee;
    }
	
    public void request() {
        adaptee.specificRequest(); //转发调用
    }
}

4.模式实例

仿生机器人:实例说明

现需要设计一个可以模拟各种动物行为的机器人,在机器人中定义了一系列方法,如机器人叫喊方法cry()、机器人移动方法move()等。如果希望在不修改已有代码的基础上使得机器人能够像狗一样叫,像狗一样跑,使用适配器模式进行系统设计。

仿生机器人:参考类图

结构型 | 1.适配器模式_第3张图片

5.模式的优缺点

适配器模式优点:

  • 目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,无须修改原有结构
  • 增加了类的透明性和复用性,提高了适配者的复用性,同一个适配者类可以在多个不同的系统中复用
  • 灵活性和扩展性非常好
  • 类适配器模式:置换一些适配者的方法很方便
  • 对象适配器模式:可以把多个不同的适配者适配到同一个目标,还可以适配一个适配者的子类

适配器模式缺点:

  • 类适配器模式:
    (1) 一次最多只能适配一个适配者类,不能同时适配多个适配者
    (2) 适配者类不能为最终类
    (3) 目标抽象类只能为接口,不能为类

  • 对象适配器模式:

    在适配器中置换适配者类的某些方法比较麻烦。(可以通过再增加一个适配器类继承原适配者类,然后进行需要的修改,再将这个子类注入到相应的适配器之中)

你可能感兴趣的:(设计模式)