Decorator pattern

// Decorator pattern
// 假设Class1用到Class2的一些数据结构或者一些方法,如果想让Class1能够灵活的替换Class2提供的功能的实现,那么可以定义一个接口Interface1,描述Classe2提供的功能,
// 然后在Interface1的实现类Class3中,用Class2提供的数据结构和方法来实现接口方法,将来要替换Class2的时候,仅需要修改Class3中的实现,而不用修改Class1

interface Interface1
{
	void InterFun([in] string str) = 0;
}

class Class3 : public Interface1
{
public:
	void InterFun(string str)
	{
		// 对m_struct进行控制
		……
	}
	
private:
	Class2::StructClass2 m_struct;
}
class Class1
{
public:
	Class1()
	: this(new Class3())
	{
	}
	Class1(Interface1* pInter)
	{
		m_pInterface1 = pInter;
	}
	void Fun()
	{
		m_pInterface1->InterFun("Hello World!");
	}
	
private:
	Interface1* m_pInterface1;
}

// 此时Class1和Class2已分离,Class1通过接口Interface1操作Class2的数据结构,以后要替换Class2的话,只要重新实现一个Class4,替换Class3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值