#include<iostream>
using namespace std;
class Component
{
public:
virtual void methodOne()=0;
virtual void methodTwo()=0;
};
class ConcreteComponent:public Component
{
public:
void methodOne()
{
cout<<"RootOne"<<endl;
}
void methodTwo()
{
cout<<"RootTwo"<<endl;
}
};
class Decrator:public Component
{
public:
Decrator()
{
}
Decrator(Component *con)
{
_con = con;
}
void methodOne()
{
_con->methodOne();
cout<<"DecratorOne"<<endl;
}
void methodTwo()
{
_con->methodTwo();
cout<<"DecratorTwo"<<endl;
}
private:
Component *_con;
};
class ConcreteDecratorA:public Decrator
{
public:
ConcreteDecratorA(Component *_con)
{
con=_con;
}
void methodOne()
{
con->methodOne();
cout<<"ConcreteDecratorOneA"<<endl;
}
void methodTwo()
{
con->methodTwo();
cout<<"ConcreteDecratorTwoA"<<endl;
}
private:
Component *con;
};
class ConcreteDecratorB:public Decrator
{
public:
ConcreteDecratorB(Component *_con)
{
con=_con;
}
void methodOne()
{
con->methodOne();
cout<<"ConcreteDecratorOneB"<<endl;
}
void methodTwo()
{
con->methodTwo();
cout<<"ConcreteDecratorTwoB"<<endl;
}
private:
Component *con;
};
void main()
{
Component *conA;
Component *conB;
conA = new ConcreteDecratorA(new ConcreteComponent());
conA->methodOne();
conA->methodTwo();
system("pause");
}
设计模式之装饰模式(Deractor)
最新推荐文章于 2024-07-15 18:27:04 发布