Head First设计模式笔记(设配器模式)

来源:互联网 发布:中国指数研究院 知乎 编辑:程序博客网 时间:2024/05/24 04:04

设配器模式:将一个类的接口,转换成客户期望的另一个接口,设配器让原来接口不兼容的类可以合作无间
火鸡接口

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

具体的火鸡

public class WildTurkey implements Turkey{    @Override    public void gobble() {        System.out.println("Gobble gobble");    }    @Override    public void fly() {        System.out.println("i am flying a short distance");    }}

鸭子接口

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

现在程序中我想要用一只鸭子,但是我又不想新写一只鸭子的实现类,我想利用现在已有的火鸡类,因为鸭子与火鸡的这两个功能是差不多的,因此我就需要写一个设配器类
TurkeyAdapter

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

最后我测试一下这个设配器

public class DuckTestDrive {    public static void main(String[] args){        //一只火鸡        WildTurkey turkey = new WildTurkey();        //将火鸡设配成一只鸭子        Duck duck = new TurkeyAdapter(turkey);        duck.quack();        duck.fly();    }}
原创粉丝点击