您的位置:首页 > 娱乐 > 明星 > 软件合集_咨询类公司网页设计_手机百度2020最新版_日照网络推广公司

软件合集_咨询类公司网页设计_手机百度2020最新版_日照网络推广公司

2025/1/3 5:51:39 来源:https://blog.csdn.net/sinat_27236401/article/details/144333384  浏览:    关键词:软件合集_咨询类公司网页设计_手机百度2020最新版_日照网络推广公司
软件合集_咨询类公司网页设计_手机百度2020最新版_日照网络推广公司

链接:C++ 设计模式
链接:C++ 设计模式 - 门面模式
链接:C++ 设计模式 - 代理模式
链接:C++ 设计模式 - 中介者

适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个类的接口转换成客户端期望的另一个接口,从而使原本由于接口不兼容而无法一起工作的类可以协同工作。

1.问题分析

在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。为了让这些类能够协同工作,我们需要一种方法来“适配”它们的接口。

2.实现步骤

  1. 定义目标接口(Target Interface):这是客户期望使用的接口。
  2. 定义现有接口(Adaptee Interface):这是需要适配的现有接口。
  3. 创建适配器类(Adapter Class):适配器类实现目标接口,并在内部调用现有接口的方法。

3.代码示例

3.1.定义旧接口(Adaptee)

class OldInterface {public:void oldRequest() { std::cout << "Old request" << std::endl; }
};

3.2.定义新接口(Target)

class NewInterface {public:virtual ~NewInterface() = default;virtual void newRequest() = 0;
};

3.3.定义对象适配器(Adapter)

class ObjectAdapter : public NewInterface {public:ObjectAdapter(std::unique_ptr<OldInterface> adaptee) : adaptee_(std::move(adaptee)) {}void newRequest() override { adaptee_->oldRequest(); }private:std::unique_ptr<OldInterface> adaptee_;
};

3.4.客户端代码

int main() {std::unique_ptr<OldInterface> oldInterface = std::make_unique<OldInterface>();std::unique_ptr<NewInterface> adapter = std::make_unique<ObjectAdapter>(std::move(oldInterface));adapter->newRequest();  // 输出 "Old request"return 0;
}

4.总结

适配器模式的核心思想是通过引入一个适配器类,将现有接口转换为目标接口。适配器类实现目标接口,并在内部持有现有接口的实例,通过调用现有接口的方法来实现目标接口的方法。

适配器模式有两种主要形式:

  1. 类适配器:通过多重继承实现适配器模式,适配器类继承目标接口和现有接口。这种方式在C++中不常用,因为多重继承可能带来复杂性。
  2. 对象适配器:通过组合实现适配器模式,适配器类持有现有接口的实例。这种方式更为常见,因为它更灵活且符合单一职责原则。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com