Decorator
C++有些要注意的地方
像是呼叫super class的constructor要在brace前用: Base()
以及呼叫super class的method要用"::"運算子: Base::Method()
#include
using namespace std;
class IComp {
public:
virtual void doSomething() = 0;
};
class fromComp : public IComp {
public:
virtual void doSomething() {
cout << "non Deco" << endl;
}
};
class Deco : public IComp {
public:
Deco(IComp* i) : theOrin(i) {}
virtual void doSomething() {
theOrin->doSomething();
}
virtual ~Deco(){
delete(theOrin);
}
private:
IComp* theOrin;
};
class DecoA : public Deco {
public:
DecoA(IComp* i) : Deco(i) {}
virtual void doSomething() {
cout << "DecoA" << endl;
Deco::doSomething();
}
};
class DecoB : public Deco {
public:
DecoB(IComp* i) : Deco(i) {}
virtual void doSomething() {
cout << "DecoB" << endl;
Deco::doSomething();
}
};
int main()
{
fromComp* a = new fromComp();
a->doSomething();
DecoA* b = new DecoA(a);
b->doSomething();
DecoB* c = new DecoB(a);
c->doSomething();
return 0;
}
沒有留言:
張貼留言