设计模式(6)-适配器模式及实现

设计模式(6)-适配器模式及实现


基本概念

通过引入一个适配器类来充当中间人,将一个接口转换成另一个接口,使得两个不兼容的对象能够协同工作。适配器类包含一个对不兼容接口的引用,并实现了你期望的目标接口。这样,当你需要使用目标接口的时候,可以通过适配器来调用原本不兼容的类的方法。
优点:
适配器模式的应用可以使得现有的代码与新代码能够无缝协同工作,从而提高了代码的可重用性。它允许你将不同系统、库或组件整合在一起,而无需对现有代码进行大量修改。
缺点:
适配器模式也可能引入一些复杂性,因为你需要维护适配器类和处理不同接口之间的映射关系。

https://gitee.com/want-to-lose-another-30-jin/design-pattern-implementation

设计模式具体实现


角色

1、Target(目标接口):定义客户端使用的特定领域相关的接口。
2、Adaptee(被适配者):一个已经存在的类,需要适配。
3、Adapter(适配器):通过在内部包装一个Adaptee对象,把源接口转换成目标接口。

java实现

package com.shejimoshi.shipeiqimoshi;

// 目标接口
public interface Target {
    void request();
}


package com.shejimoshi.shipeiqimoshi;

// 被适配者
public class Adaptee {
    public void specificRequest() {
        System.out.println("特定请求被调用");
    }
}



package com.shejimoshi.shipeiqimoshi;

// 适配器
public class Adapter implements Target {
    private Adaptee adaptee;

    public Adapter(Adaptee adaptee) {
        this.adaptee = adaptee;
    }

    @Override
    public void request() {
        adaptee.specificRequest();
    }
}



package com.shejimoshi.shipeiqimoshi;

public class client {
    public static void main(String[] args) {
        Adaptee adaptee = new Adaptee();
        Target target = new Adapter(adaptee);
        target.request();
    }
}

c++实现

#include<iostream>
using namespace std;

// 目标接口
class Target {
public:
    virtual ~Target() {}
    virtual void request() = 0;
};

// 被适配者
class Adaptee {
public:
    void specificRequest() {
        std::cout << "特定请求被调用" << std::endl;
    }
};

// 适配器
class Adapter : public Target {
private:
    Adaptee* adaptee;
public:
    Adapter(Adaptee* adaptee) : adaptee(adaptee) {}

    void request() override {
        adaptee->specificRequest();
    }
};

int main() {
    Adaptee* adaptee = new Adaptee();
    Target* target = new Adapter(adaptee);
    target->request();
    delete target;
    delete adaptee;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值