목록Game Dev/Design Patterns (5)
KoreanFoodie's Study
GoF 의 디자인 패턴과 강의를 참고하여 디자인 패턴에 대한 내용을 정리하고 있습니다. Dependency Injection Principle (의존성 역전 원리) 부모 - 자식 관계를 설정하는 Relationship 클래스와 관계를 검색하는 Research 클래스가 있다고 가정해보자. 다음과 같이 코드를 짠다면 어떨까? #include #include #include #include using namespace std; // A. High-level modules should not depend on low-level modules. // Both should depend on abstractions. // B. Abstractions should not depend on details. // Deta..
GoF 의 디자인 패턴과 강의를 참고하여 디자인 패턴에 대한 내용을 정리하고 있습니다. Interface Segregation Principle (인터페이스 분리 원칙) 인터페이스 분리 원칙, ISP 는 각 인터페이스가 사용하지 않는 메서드만 지원해야 함을 의미한다. 예를 들어, 프린트와 스캐너 기능을 하는 기계를 인터페이스로 구현했다고 하자. struct IMachine { virtual void print(Document& doc) = 0; virtual void fax(Document& doc) = 0; virtual void scan(Document& doc) = 0; }; struct MFP : IMachine { void print(Document& doc) override; void fax(..
GoF 의 디자인 패턴과 강의를 참고하여 디자인 패턴에 대한 내용을 정리하고 있습니다. Liskov Substitution Principle (리스코프 치환 원칙) 리스코프 치환 원칙 (줄여서 LSP) 란, 기반 클래스가 있고 파생 클래스가 있을때, 기반 클래스가 들어가는 자리에 파생 클래스가 들어갈 수 있어야 하며, 이때 기반 클래스를 넣었을때의 의도대로 코드가 잘 동작해야 함을 의미한다. 예를 들어, Rectangle 클래스를 기반 클래스로 한 Square 클래스를 보자. process 라는 함수에서 높이를 10으로 만든 후, 넓이를 반환하고 있다. #include class Rectangle { protected: int width, height; public: Rectangle(const int ..
GoF 의 디자인 패턴과 강의를 참고하여 디자인 패턴에 대한 내용을 정리하고 있습니다. Open-Closed Principle (개방-폐쇄 원칙) OCP 는 확장에는 열려있고, 수정에는 폐쇄적인 디자인 원칙을 의미한다. (Open for extension, Closed for modification) 예를 들어, 다음과 같은 구조의 Product 를 분류해야 하는 코드를 짠다고 가정해 보자. 색깔과 사이즈 등의 기준으로 제품을 분류할 것이다. struct Product { string name; Color color; Size size; }; 위 경우, enum class 와 functor 를 사용하면 다음과 같이 코드를 짤 수 있을 것이다. #include #include #include using n..
GoF 의 디자인 패턴과 강의를 참고하여 디자인 패턴에 대한 내용을 정리하고 있습니다. Single Responsibility Principle (단일 책임 원칙) Single Responsibility Principle, 줄여서 SRP 는 단일 책임 원칙으로, 모든 클래스가 하나의 책임을 가지며, 클래스가 그 책임을 완전히 캡슐화해야 함을 의미한다. 아래 코드를 보자. #include #include #include #include #include using namespace std; struct Journal { string title; vector entries; explicit Journal(const string& title) : title{title} { } void add(const stri..