본문 바로가기

Design Pattern/생성 패턴(Creational Patterns)5

프로토타입(Prototype) - 생성 패턴(Creational Patterns) 프로토타입 패턴은 개체를 생성하는 디자인 패턴이다. 새로운 개체를 만들기 위해 기존의 개체를 복제하는 방법을 사용하는데 특히 개체 생성 과정이 복잡하거나 자원을 많이 소모할 때 유용하게 사용할 수 있다.기존에 만들어진 개체를 사용하여 새로운 개체를 생성하는 게 핵심인데 복제한 개체의 프로토타입(원본)을 가지고 있고, 이 원본 개체를 복제함으로써 새로운 개체를 빠르고 효율적으로 생성할 수 있다.  프로토타입 개체 정의 : 복제될 개체의 원분이 되는 프로토타입 개체를 정의한다. 이 개체는 모든 상태와 데이터를 가지고 있어야 하며, 자신을 복제할 수 있는 메커니즘을 제공해야 한다.  복제(클로닝) 메서드 : 프로토타입 개체는 자신의 복사본을 만들어 반환할 수 있는 clone() 메서드 같은 복제 메커니즘을 제.. 2024. 5. 15.
빌더(Builder) - 생성 패턴(Creational Patterns) 빌더 패턴은 개체의 생성 과정을 단계별로 분할하고, 그 과정을 캡슐화하여 복잡한 개체를 조립할 수 있게 도와주는 패턴이다. 이 패턴은 특히 복잡한 구성을 가진 개체를 생성할 때 유용하다. 동일한 생성 과정을 통해 다양한 표현과 구성의 개체를 만들 수 있다.  이 패턴의 구성을 먼저 보자  Builder : 개체의 여러 부분을 생헝하는 방법을 정의한 인터페이스이다. 여러단계에 걸쳐 복잡한 개체의 각 부분을 어떻게 생성할지 대한 세부사항을 포함한다. Concrete Builder : Builder 인터페이스를 구현하며, 구체적인 개체의 부품을 조립하는 방법과 최종 개체를 반환하는 메서드를 포함한다.  Director : Builder 인터페이스를 사용해 개체를 단계뼐로 생한다. Director는 어떤 순서로.. 2024. 5. 14.
추상 팩토리(Abstract Factory) - 생성 패턴(Creational Patterns) 추상 팩토리 패턴은 여러 관련 개체의 그룹, 서로 다르지만 특정 주제나 시나리오에 맞는 개체들을 생성하는 인터페이스를 제공하는 디자인 패턴이다. 이 패턴은 팩토리의 팩토리라고 표현할 수 있을 정도로 구체적인 클래스에 의존하지 않고 제품의 그룹을 생성할 수 있게 해 준다. 추상 팩토리의 구성은 팩토리 메서드 패턴과 비슷하다.  Abstract Factory  : 객체의 생성을 위한 인터페이스를 정의한다. 이 인터페이스는 여러 종류의 관련 있는 제품을 생성하는 메서드들을 포함한다. Concreate Factory : Abstract Factory 인터페이스를 구현하는 클래스이다. 특정 제품 그룹을 생성한다.Abstract Product : 생성될 제품들의 공통 인터페이스다.Concreate Product :.. 2024. 5. 14.
팩토리 메서드(Factory Method) - 생성 패턴(Creational Patterns) 팩토리 메서드 패턴은 객체 생성을 위한 인터페이스를 정의한다. 하지만 실제 객체 생성은 하위 클래스가 결정하도록 위임하는 생성 패턴이다. 이 패턴은 객체를 생성하는 코드와 해당 객체를 사용하는 코드를 분리함으로써 결합도를 낮추고, 유연성 및 확장성을 향상시킨다.Product (제품): 만들어질 객체들이 공통적으로 따라야 하는 인터페이스를 정의한다.Concrete Product (구체적인 제품): Product의 규칙을 실제로 구현한 객체이다.Creator (생성자): 객체를 만드는 방법을 선언하는 역할을 하며, "어떤 종류의 제품을 만들지"에 대해 추상적으로 정의한다. 실제 구현은 하위 클래스에서 이루어진다.Concrete Creator (구체적인 생성자): Creator가 정의한 메서드를 실제로 구현한.. 2024. 5. 13.
싱글톤(Singleton) - 생성 패턴(Creational Patterns) 가장 많이 사용하는 패턴 중 하나인 싱글톤 패턴은 특정 클래스의 인스턴스가 프로그램 전체에 하나만 존재하도록 보장하는 것이다. 싱글톤 패턴을 사용하면 동일한 개체를 여러 번 생성하지 않고 일관된 접근성을 제공할 수 있다. 클래스가 스스로 자신의 유일한 인스턴스를 관리하고 이에 대해서 전역 접근 지점을 제공하는데 주로 리소스를 공유하거나 구성을 설정하는 데 사용한다.  싱글턴에 대해 간단하게 예시로 설명하면 아파트 단지에 하나만 있는 관리사무소로 이해하면 쉬울 것 같다. 아파트단지에 공통적으로 사용하는 관리사무소는 단지 내에 유일하고, 아파트 주민들은 관리 사무소를 통해 다양한 서비스를 받는다. 이 때문에 아파트 주민들은 관리 사무소를 직접 만들거나 복제할 필요가 없고, 이미 존재하는 관리사무소를 이용하면.. 2024. 5. 10.