본문 바로가기

C++/0x01-design pattern13

composite pattern composite pattern 1.소스 #include #include using namespace std; // 2. Create an "interface" (lowest common denominator) class Component { public: virtual void traverse() = 0; }; class Leaf: public Component { // 1. Scalar class 3. "isa" relationship int value; public: Leaf(int val) { value = val; } void traverse() { cout traverse(); } }; int main() { Composite containers[4]; for (int i = 0; i < 4;.. 2016. 7. 14.
Observer pattern Observer pattern 1.소스 #include #include using namespace std; class Subject { // 1. "independent" functionality vector views; // 3. Coupled only to "interface" int value; public: void attach(Observer *obs) { views.push_back(obs); } void setVal(int val) { value = val; notify(); } int getVal() { return value; } void notify(); }; class Observer { // 2. "dependent" functionality .. 2016. 7. 14.
design pattern ][ Abstract Factory pattern design pattern ][ Abstract Factory pattern1. 예제소스1 #include using namespace std; #define DEFAULT 0 #define GET 1 #define PUT 2 /* Interface */ class Handler { public: virtual void execute(char *instr)=0; virtual int getID()=0; }; /* Factory Class */ class HandlerFactory { public: Handler *instance(){} }; class GetHandler : public Handler { public : void execute(char *str) { cout 2016. 7. 14.
state 패턴 state 패턴 1.소스 #include #include using namespace std; class YState { public: YState(); virtual ~YState(); virtual void init() = 0; virtual void Draw() = 0; virtual void ReleaseAll() = 0; }; YState::YState() { } YState::~YState() { } class YLogo : public YState { public: YLogo(); ~YLogo(); //virtual void init(); void Draw(); void ReleaseAll(); }; YLogo::YLogo() { } YLogo::~YLogo() { } void YLogo::.. 2016. 7. 14.