Factory Method Pattern

객체를 생성하기 위해 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지에 대한 결정은 서브클래스가 결정하도록 한다. Motivation 애플리케이션이 여러 도형(원, 사각형 등)을 그려야 하며, 각 도형은 그리는 방식(화면에 그리기, 파일에 그리기 등)이 다르다. 클라이언트 코드에서 도형을 생성할 때 어떤 도형을 생성할지 조건문으로 판단하고, 이를 여러 곳에서 반복해야 한다. 팩토리 메서드 패턴을 사용하면 객체 생성을 서브클래스에 위임하여 클라이언트 코드에서 도형을 구체적인 클래스에 의존하지 않도록 할 수 있다. 즉, 도형 종류가 추가될 때 기존 코드를 수정하지 않고 새로운 도형 클래스를 추가하는 것만으로 해결할 수 있다....

January 28, 2025 · 4 min · Beomsu Lee

Prototype Pattern

원형이 되는 인스턴스를 사용하여 생성할 객체의 종류를 명시하고, 이렇게 만든 견본을 복사해 새로운 객체를 생성한다. Motivation 게임 개발 시 여러 종류의 유닛을 사용하고 있다고 하자. 각 유닛 객체는 다양한 특성을 가지고 있으며, 게임에서 동일한 유닛을 복제해 새로운 유닛을 생성하는 상황이 많다. 이때, 매번 새로운 유닛을 생성하려면 비용이 크고, 시간이 많이 소요될 수 있다. 프로토타입 패턴을 사용하면 객체를 복제하는 방식으로 새로운 유닛을 생성할 수 있다. 이 패턴을 사용하면 객체의 복제가 간단해지고, 성능이 향상된다....

January 28, 2025 · 4 min · Beomsu Lee

Singleton Pattern

오직 한 개의 클래스 인스턴스만 갖도록 보장하고, 이에 대한 전역적인 액세스 포인트를 제공한다. Motivation 애플리케이션 설정을 관리하는 클래스가 있다고 하자. 설정 클래스는 애플리케이션에서 단 하나의 인스턴스만 있어야 하며, 이 설정은 애플리케이션 전반에서 공유되어야 한다. 만약 설정 객체가 여러 번 생성된다면 비효율적이고, 일관성이 없을 수 있다. 싱글톤 패턴을 사용하면 설정 객체 인스턴스가 오직 하나만 존재하도록 보장할 수 있다. Applicability 클래스의 인스턴스가 오직 하나여야 함을 보장하고, 잘 정의된 액세스 포인트로 모든 사용자가 접근할 수 있도록 해야 할 때 유일한 인스턴스가 서브클래싱으로 확장되어야 하며, 사용자는 코드 수정 없이 확장된 서브클래스의 인스턴스를 사용할 수 있어야 할 때 Structure Singleton: Instance() 연산을 정의하여 유일한 인스턴스로 접근할 수 있도록 함 Collaborations 사용자는 Singleton 클래스에 정의된 Instance() 연산을 통해 유일하게 생성되는 싱글톤 인스턴스에 접근할 수 있다....

January 28, 2025 · 4 min · Beomsu Lee

Abstract Factory Pattern

추상 팩토리 패턴은 연관성이 있는 객체 군을 생성하기 위한 인터페이스를 제공한다. Motivation 웹 애플리케이션을 개발할 때, 사용자의 웹 브라우저나 운영체제에 따라 다양한 UI 컴포넌트를 다르게 제공해야 할 수 있다. 이때, 운영체제에 따라 다른 UI 컴포넌트들을 하나의 일관된 인터페이스로 제공하는 것이 필요하다. 예를 들어, Button, TextField와 같은 UI 컴포넌트를 운영체제에 맞는 객체로 생성해야 하는데, 이를 각각 다르게 처리하려면 기존 코드에서 복잡한 조건문을 사용해야 한다. 추상 팩토리 패턴을 사용하면 각 운영체제에 맞는 객체를 생성하는 일관된 방법을 제공할 수 있다....

January 27, 2025 · 4 min · Beomsu Lee

Effective Modern C++

Deducing Types Item 1: Understand template type deduction 예를 들어 함수 템플릿 선언이 다음과 같다고 하자. template<typename T> void f(const T& param); // ParamType is const T& 그리고 이를 다음과 같이 호출한다. int x = 0; f(x); // call f with an int 이 경우 T는 int로 추론되나 ParamType은 const int&로 추론된다. T에 대해 추론된 타입은 expr 타입 뿐만 아니라 ParamType의 타입에도 의존한다. 타입에 따라 총 3가지 경우로 나뉜다. ParamType이 포인터 또는 참조 형식이지만 보편 참조(universal reference)는 아닌 겨웅 ParamType이 보편 참조인 경우 ParamType이 포인터도 아니고 참조도 아닌 경우 경우 1: ParamType이 포인터 또는 참조 타입이지만 보편 참조는 아님 이 경우 타입 추론은 다음과 같이 진행된다....

December 24, 2024 · 69 min · Beomsu Lee