본문 바로가기

728x90

디자인패턴

[디자인패턴][생성패턴] 프로토타입 Prototype - C++ [모던 C++ 디자인 패턴] 책을 바탕으로 공부하는 내용을 정리한 내용이다. Prototype pattern 처음부터 모두 새로 만드는 방식(이 경우 팩토리나 빌더 패턴이 유용)은 어렵다. 대신, 이미 존재하는 객체를 이용해 복제해 사용하는 방식은 처음부터 새로 만들지 않고 쉽게 생성할 수 있다. 아니면 일부를 수정하거나 확장할 수도 있을 것이다. 이러한 아이디어를 갖고 프로토타입 패턴이 나오게 된다. 프로토타입 패턴을 이용하면 어떤 모델 객체도 복제할 수 있고, 복제본을 커스터마이징해 사용할 수도 있다. 가장 까다로운 부분이라면, 복제를 구현하는 부분이다. 객체 생성 생성자를 통해 객체를 생성하는 것보다 이미 잘 설정된 객체를 복제하는 것이 보다 쉬운 방법이다. 빌더 패턴을 이용해 복잡한 생성 과정을 .. 더보기
[디자인패턴][생성패턴] 팩터리 Factory - C++ [모던 C++ 디자인 패턴] 책을 바탕으로 공부하는 내용을 정리한 내용이다. Factory pattern 두 개의 GoF(Gang of Four) 패턴, 팩터리 메서드와 추상 팩터리를 동시에 알아본다. 이 두 패턴은 긴밀하게 연관이 되어있다. 시나리오 직교 좌표계의 좌표점 정보를 저장한다고 가정하자. 다음과 같이 쉽게 구현할 수 있을 것이다. struct CPoint { CPoint(const float x, const float y) : m_x(x), m_y(y) {} float m_x, m_y; //< 직교 좌표계의 좌표 } 여기서 극좌표계로 좌표점 정보를 저장해야 한다면 어떻게 할까? 쉽게 다음과 같이 극좌표계용 생성자를 추가할 것이다. CPoint(const float r, const float .. 더보기
[디자인패턴][생성패턴] 빌더 Builder - C++ [모던 C++ 디자인 패턴] 책을 바탕으로 공부하는 내용을 정리한 내용이다. Builder pattern 생성이 까다로운 객체를 쉽게 처리하기 위한 패턴이다. 즉, 생성자 호출 코드 단 한 줄로 생성할 수 없는 객체를 쉽게 다루는 패턴이다. 코드 한줄로 생성할 수 없는 객체는 다른 객체들의 조합이거나, 상식적인 것을 벗어난 까다로운 로직이 요구된다. 이런 객체는 생성하는 코드를 따로 분리해야 한다. 책에 나오는 예제는 그렇게 까다로워 보이지 않지만, 빌더 패턴을 어떻게 구현하는지, 빌더 패턴을 사용하는 의미가 무엇인지에 대해 설명할 수 있는 정도다. 시나리오 HTML 웹 페이지에 입력할 컴포넌트를 생성한다고 가정하자. 단순하게 "hello"와 "world"를 비순차() 리스트() 태그로 출력하려고 한다... 더보기
[디자인패턴] 공부를 시작하면서 (개요) [모던 C++ 디자인 패턴] 책을 바탕으로 공부하는 내용을 정리한 내용이다. 어떻게 공부할지 오늘은 그 첫 번째 내용으로 책의 개요에 해당하는 내용을 정리하고, 앞으로 어떻게 공부할 지에 대한 내용이다. 해당 책은 모던 C++(C++11)을 기준으로 디자인 패턴을 공부할 수 있도록 재정리한 책이다. (고전적인 디자인 패턴 원저 GoF를 최신 버전의 C++을 이용해 업데이트한 것이라고 소개하고 있다.) 현재 회사에서는 C++98을 기준으로 코드를 작성하고 있다. 납품해야 하는 고객사들 서버 기준으로 아직까지도 호환성을 고려해야 하기 때문이다. 그래서 나는 앞으로 디자인 패턴을 디자인 패턴을 공부하면서, 책에서 모던 C++ 예제를 C++98 기준으로 최대한 재정의해보고 공부를 해보자 한다. 다만, 언어 자체.. 더보기

728x90