Decorator 用來將功能擴充
先定義一個介面,Decorator具有該介面,且將之擴充功能
Java的IO用到很多這個Pattern
class Base {
public:
virtual void Action(){}
};
class Decorator : public Base {
private:
Base* base;
public:
Decorator(){};
Decorator(Base* base)
{
this->base = base;
}
virtual void Action()
{
this->base->Action();
this->Add_on();
}
virtual void Add_on(){}
};
class BaseClass : public Base {
public:
virtual void Action()
{
cout << "Action:\n";
}
};
class GoodDecorator : public Decorator {
public:
GoodDecorator(Base* base) : Decorator(base)
{}
virtual void Add_on()
{
cout << "Good\n";
}
};
class BadDecorator : public Decorator {
public:
BadDecorator(Base *base) : Decorator(base)
{}
virtual void Add_on()
{
cout << "Bad\n";
}
};
int main()
{
BaseClass *bs = new BaseClass();
GoodDecorator *good = new GoodDecorator(bs);
BadDecorator *bad = new BadDecorator(bs);
bs->Action();
good->Action();
bad->Action();
return 0;
}
沒有留言:
張貼留言