设计模式 -- Adapter(适配器模式)

适配器(Adapter)

将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。

代码

//目标接口(新接口)
interface ITarget {
    void process();
};

//遗留接口(老接口)
interface IAdaptee {
    void foo(int data);

    int bar();
};

//遗留类型
class OldClass implements IAdaptee {
    @Override
    public void foo(int data) {

    }

    @Override
    public int bar() {
        return 0;
    }
};

//对象适配器
class ObjectAdapter implements ITarget {
    // 组合
    IAdaptee iAdaptee;

    public ObjectAdapter(IAdaptee iAdaptee) {
        this.iAdaptee = iAdaptee;
    }

    public void process() {
        int data = iAdaptee.bar();
        iAdaptee.foo(data);
    }
};

// 类适配器
class ClassAdapter extends OldClass
    implements ITarget {

    @Override
    public void process() {
        int data = bar();
        foo(data);
    }
}

总结

Adapter模式主要应用于“希望复用一些现存的类,但是接口又与服用环境要求不一致的情况”,在遗留代码复用、类库迁移等方面非常有用。

Adapter模式可以实现的非常灵活、例如 堆或者队列、只需对象组合集合或者类继承集合、也是符合Adapter模式的。

posted @ 2022-10-10 18:47  鐡道  阅读(96)  评论(0)    收藏  举报