Structural Pattern
기존에 개발되어 있는 모듈을 우리 시스템에서 사용하려 했더니 인터페이스가 달라 사용하기 힘들다.
#include <iostream> using namespace std; struct POINT { int x,y; }; // 도형 class CShape { public: virtual void GetShapeInfo(POINT& ptTopLeft, POINT& ptBottomRight) {} }; // 사각형 보기 class CRectView { public: void GetOrigin(int x, int y) { cout << x << " " << y << endl; } void GetSize(int nWidth, int nHeight) { cout << nWidth << " " << nHeight << endl; } }; // 사각형 class CRectangle : public CShape, public CRectView { public: virtual void GetShapeInfo(POINT& ptTopLeft, POINT& ptBottomRight) { GetOrigin(ptTopLeft.x, ptTopLeft.y); GetSize(ptBottomRight.x - ptTopLeft.x, ptBottomRight.y - ptTopLeft.y); } }; int main(void) { CShape* rect = new CRectangle; POINT pt1 = {3, 4}; POINT pt2 = {7, 8}; rect->GetShapeInfo(pt1, pt2); delete rect; return 0; }
class CRectangle : public CShape { private: CRectView pView; public: virtual void GetShapeInfo(POINT& ptTopLeft, POINT& ptBottomRight) { pView.GetOrigin(ptTopLeft.x, ptTopLeft.y); pView.GetSize(ptBottomRight.x - ptTopLeft.x, ptBottomRight.y - ptTopLeft.y); } };
나머지 부분은 클래스 어댑터와 동일