본문 바로가기
  • 쓸쓸한 개발자의 공부방

디자인패턴3

[C++] 디자인 패턴 : 변하는 것을 분리하는 방법 2가지 [C++] 디자인 패턴 : 변하는 것을 분리하는 방법 2가지 클래스를 정의하고 상속 받아서 사용하는 경우 재사용성을 고려하는 디자인 패턴에 대해 알아야 한다. 변하지 않는 코드(전체 흐름) 안에 있는 변해야 하는 부분(정책)은 분리 하는 것이 좋다. 1) template method : 변하는 것을 가상함수로 (상속 기반) 변해야 하는 부분 (아래에서 validate 함수)을 별도의 가상 함수로 분리한다. 변하는 것 (validate)을 가상 함수로 분리할 때의 장점 - validation 정책을 변경하고 싶다면 Edit의 파생 클래스를 만들어서 validate() 가상 함수를 재정의하면 된다. template method 장단점 상속 기반은 유연성이 떨어지는 편, 재사용이 크게 필요없는 경우 명확한 편.. 2022. 1. 30.
[C++] 디자인패턴 : protected constructor C++ 디자인 패턴 : protected constructor (protected생성자) 생성자의 정확한 호출 순서를 이해해야 한다. 1. Dog의 생성자가 먼저 호출된다. (Dog d; 에 의해 호출됨) 2. Dog의 생성자 안에서 기반 클래스인 Animal의 생성자를 호출한다. class Animal { protected: Animal() {} }; class Dog : public Animal { public: Dog() {} // Dog() : Animal() {} }; int main() { Animal a; // error Dog d; // ok. } 생성자를 protected에 만드는 이유? - 자기 자신(Animal)을 만들 수는 없다. - 하지만 파생 클래스(Dog)의 객체는 만들 수 있.. 2022. 1. 27.
[C++] Design Patterns (디자인 패턴) - GoF [C++] Design patterns (디자인 패턴) - GoF 총 23가지의 패턴을 소개하고 있습니다. 개발자들끼리 대화하고 업무의 효율을 높여주는 디자인 패턴은 개발자에게 필수적입니다. 위의 왼쪽 책은 1995년 발간된 디자인 패턴 책입니다. 기존의 존재하는 코딩 방식에 이름을 부여해 책으로 펼쳐냈습니다. 위의 오른쪽 책은 한글 개정판으로 2015년 출판된 책입니다. 부제목은 "재사용성을 지닌 객체지향 소프트웨어의 핵심 요소" (Elements of Reusable Object-Oriented Software) 라고 되어 있네요. 다른 국적의 저자 4명이 함께 책을 썼습니다. 에릭 감마, 리처드 헬름, 랄프 존슨, 존 블리시디스 그래서 4명의 갱이라고 해서 GoF (Gang of Four) 의 디자.. 2022. 1. 26.