// Decorator pattern
// 假设Class1用到Class2的一些数据结构或者一些方法,如果想让Class1能够灵活的替换Class2提供的功能的实现,那么可以定义一个接口Interface1,描述Classe2提供的功能,
// 然后在Interface1的实现类Class3中,用Class2提供的数据结构和方法来实现接口方法,将来要替换Class2的时候,仅需要修改Class3中的实现,而不用修改Class1
// 此时Class1和Class2已分离,Class1通过接口Interface1操作Class2的数据结构,以后要替换Class2的话,只要重新实现一个Class4,替换Class3
// 假设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