C++ 大话设计之《适配器模式》(优缺点,设计原理,常用场景)

优点:

  • 可以让两个不兼容的接口协同工作。
  • 可以提高类的复用性。
  • 可以增加类的透明性和可扩展性。

缺点:

  • 适配器模式可能会增加系统的复杂性。
  • 在使用适配器模式时,需要仔细设计适配器接口,以避免在未来修改适配器接口时带来的问题。

满足设计原理:

  • 单一职责原则:适配器模式通过定义适配器类来实现单一职责原则。适配器类的唯一职责就是将一个接口转换为另一个接口。这样,当需要修改适配器类时,只需修改适配器类即可,而无需修改其他类。
  • 开闭原则:适配器模式通过定义适配器接口来实现开闭原则。当需要添加新的适配器时,只需定义新的适配器类并实现适配器接口即可。这样,客户端代码无需修改,就可以使用新的适配器。
  • 里氏替换原则:适配器模式通过定义适配器接口来实现里氏替换原则。客户端代码依赖于适配器接口,而不是具体的适配器类。这样,当需要更换适配器时,只需更换具体的适配器类即可,而无需修改客户端代码。
     

常用实例:

  • 集成第三方库:适配器模式可以用于集成第三方库。例如,您可以定义一个适配器接口,用于将第三方库的接口转换为您的应用程序所需的接口。然后,您可以定义一个具体的适配器类,实现适配器接口并使用第三方库。这样,您的应用程序就可以使用第三方库,而无需修改现有代码。
  • 封装遗留代码:适配器模式可以用于封装遗留代码。例如,您可以定义一个适配器接口,用于将遗留代码的接口转换为新代码所需的接口。然后,您可以定义一个具体的适配器类,实现适配器接口并使用遗留代码。这样,您就可以在新代码中使用遗留代码,而无需修改遗留代码。
  • 适配不同的数据格式:适配器模式可以用于适配不同的数据格式。例如,您可以定义一个适配器接口,用于将一种数据格式转换为另一种数据格式。然后,您可以定义多个具体的适配器类,分别实现不同数据格式之间的转换。这样,您就可以在应用程序中使用不同的数据格式,而无需修改现有代码。

类图:

代码: 

#include "iostream"
#include "string"

using namespace std;

class Target
{
public:

virtual ~Target(){};
virtual void Request()=0;

};

class Adaptee
{
public:
	void SpecifiRequest()
	{
		cout<<"Called SpecificRequest()"<<endl;
	}

};

class Adapter :public Target
{
private:
	Adaptee*adaptee;
public:
	Adapter(Adaptee* adaptee)
	{
		this->adaptee=adaptee;
	}
	void Request()
	{
		adaptee->SpecifiRequest();
	}

};

int main()
{
	Adaptee *adaptee=new Adaptee;
	Adapter*adaoter=new Adapter(adaptee);
	adaoter->Request();

	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值