HeadFirst 设计模式 - Chapte7 适配器模式/外观模式

适配器设计模式

定义

将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。

适配器模式包括三个角色:目标接口Target,需要适配的类Adaptee,和适配器Adatper.

HeadFirst 设计模式 - Chapte7 适配器模式/外观模式_第1张图片

explanation:
这个模式可以通过创建适配器进行接口转换,让不兼容的接口变得兼容。
1.适配器实现目标接口 2. 使用对象组合:适配器与被适配者的组合(turkey).

在写适配器的时候需要找出每一个适配器方法在被适配器者中的对应的方法是什么。


代码

Target:Duck

javapublic interface Duck {
    public void quack();
    public void fly();
}

Adaptee: Turkey

javapublic interface Turkey {
    public void gobble();
    public void fly();
}

Adapter:

javapublic class TurkeyAdapter implements Duck {
    Turkey turkey;
    TurkeyAdapter(Turkey turkey){
        this.turkey = turkey;
    }
    public void fly() {
        for(int i=0;i<5;i++){
            turkey.fly();
        }
    }
    public void quack() {
        turkey.gobble();

    }
}

Client:

javapublic class DuckTestDrive {
    public static void main(String[] args) {
        MallardDuck Duck = new MallardDuck();
        WildTurkey turkey = new WildTurkey();
        Duck turkeyAdapter =  new TurkeyAdapter(turkey); // generate a turkey-like duck
        turkeyAdapter.fly();
        turkeyAdapter.quack();  
    }
}

外观设计模式

提供了一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用。

外观的意图就是提供一个简单的接口+将客户从组件的子系统中解耦。

HeadFirst 设计模式 - Chapte7 适配器模式/外观模式_第2张图片

比较

装饰者:不改变接口,但假如责任
适配器:将一个接口转成另一个接口
外观:让接口更简单


想更一进步的支持我,请扫描下方的二维码,你懂的~!HeadFirst 设计模式 - Chapte7 适配器模式/外观模式_第3张图片

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