반응형 프로그래밍 이야기83 [Design Pattern] Container Linked List와 같은 Container를 만들때 사용하는 전통적인 기법과 이에 대한 장점을 활용하고, 단점을 극복하는 방법에 대해 알아보자. Single Linked List의 예 #include using namespace std; struct Node { int data; Node* next; Node(int d, Node* n) : data(d), next(n) {} }; class slist { Node* head = 0; public: void push_front(int n) { head = new Node(n, head); } int front() { return head->data; } }; int main() { slist s; s.push_front(10); s.push_front.. 2021. 2. 5. [Design Pattern] Observer (관찰자) Observer Pattern 엑셀 시트에서 어떤 표에 값을 입력하면 그래프에 값이 즉각 반영되어 그래프의 그림들이 변하는 것을 볼 수 있다. 이렇게 하나의 데이터가 변경 되었을때 이 데이터와 연결된 모든 객체들이 자동으로 업데이트되도록 하는 기법을 Observer pattern이라고 한다. 객체 사이의 1:N의 종속성을 정의하고 한 객체의 상태가 변하면 종속된 다른 객체에 통보가 가고 자동으로 수정이 일어 나게 한다. #include #include using namespace std; class Table { int data; public: void SetData(int d) { data = d; } }; class PieGraph { public: void Draw(int n) { cout vect.. 2021. 2. 4. [Design Pattern] PIMPL (Pointer to Implementation) 엄밀히 Design Pattern은 아니지만 Bridge pattern과 비슷한 계층 개념인 PIMPL(Point to implementation)에 대해서 알아보자. PIMPL의 장점 1. 컴파일 속도를 향상시킨다. 2. 완벽한 정보 은닉이 가능하다. 헤더 파일을 감출 수 있다. 이러한 개념을 예제를 통해 알아보자. 다음은 Point 클래스와 이에 대한 구현의 간단한 예이다. // Point1.h class Point { int x, y; public: Point(int a = 0, int b = 0); void Print() const; }; // Point1.cpp #include #include "Point1.h" using namespace std; Point::Point(int a, int b.. 2021. 2. 3. [Design Pattern] Bridge MP3로 생각하기 다음과 같이 가상의 IPod이 있고 People은 이를 Play/Stop 할 수 있다. #include using namespace std; class IPod { public: void Play() { cout 2021. 2. 2. 이전 1 ··· 6 7 8 9 10 11 12 ··· 21 다음 반응형