2008年4月6日 星期日

Decorator

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;
}

沒有留言: