Builder Pattern

복잡한 객체를 생성하는 방법과 표현하는 방법을 정의하는 클래스를 별도로 분리하여, 서로 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공한다. Motivation 문서 작성 애플리케이션에서 PDF나 HTML 형식의 문서를 생성할 수 있는 기능이 필요하다고 하자. 문서 객체는 여러 설정 항목(제목, 내용, 스타일 등)을 필요로 하며, 이러한 설정은 객체 생성 시마다 다를 수 있다. 이들을 생성자 매개변수로 전달하면 코드가 매우 복잡해질 가능성이 있으며, 각 문서 형식마다 서로 다른 생성 방식을 적용해야 하므로 코드의 유지보수가 어려워진다....

January 28, 2025 · 5 min · Beomsu Lee

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