본문 바로가기

디자인패턴5

옵저버 패턴 #include #include #include using namespace std; /* * observer패턴을 사용하지 않는다면 polling을 사용해야한다. * cf : polling이란 주기적으로 어떠한 행위를 하는 것을 의미한다. * -> db를 사용할 때나 알림같은 경우 polling을 하는 경우를 많이보았다.. * * observer Interface를 가지고 있으면서 해당 Interace는 Update 함수를 가지고 있다 * * 여러 옵저버들은 event를 주시한다. * event에 observer들을 등록했다고 보자.. * event의 notify를 통해서 주시하고 있는 observer들의 update로 모두 호출할 수 있다 (즉각 반응가능) * */ class Observer { pu.. 2023. 9. 24.
Adapter패턴. Adapter패턴? 어댑터패턴은 말 그래도 콘센트 어댑터를 생각하면 편리하다 A와 B가 맞지 않지만 그것을 연결해주기 위해서 중간에 어댑터를 두는것과 같다.. STL과 Adapter 패턴.. Container Adapter는 컨테이너 인터페이스를 수정해서 stack, queue, pq를 제공한다.. list를 포함한다 포함을 이용한 방법.. template class Stack { Container st; public: void push(const T& a) { st.push_back(a); } void pop() { st.pop_back(); } T& top() { return st.back(); } }; int main() { Stack s1; Stack s2; return 0; } list를 포함해.. 2022. 5. 23.
builder패턴(c++) builder 패턴?? 자바에서 builder패턴을 사용할 때 단순하게 setter로 입력받을 것이 많으면 그렇게된다고 알고있었는데 구체적인 예시를 통해서 학습해볼 수 있었다. 여러가지 버전의 형태틀을 만들 때 함수 구현부는 비슷한데 약간만 변경이 된다면 중복되는 것이 많아진다 그럴 때 builder패턴을 사용하면좋다... 밑의 예시에서는 입학지원서를 만드는데 입학지원서가 text일 수도있고 xml일 수도 있다 이럴 때 builder패턴을 사용할 때 IBuilder라는 인터페이스가 기능을 물려주고 각각 타입의 지원서가 자신의 입맛대로 덧붙여서 지원서를 만들 수 있다. 소스 #include #include #include using namespace std; /* 복잡한 객체를 생성하는 방법과 표현하는 방.. 2022. 5. 13.
composite패턴 소스 #include #include #include #include using namespace std; //menu system.. /* * composite 패턴을 활용한 메뉴 만들기.. * * 우클릭시 나오는 메뉴칸에서 화살표로 새로운 메뉴가 나오느 것은 popupMenu이고, 옵션 같은 것은 MenuItem으로둔다.. * * 객체지향에서 중요한것은 공통이 되는 것을 담기 위해서 기반클래스로 담는 것이고, * 변하지않는 전체 중에서 변하는 것이 존재한다면 빼내주는 것이다.. */ class BaseMenu { string title; public: BaseMenu(string s) : title(s) {} string getTitle() const { return title; } virtual B.. 2022. 5. 12.