생성 패턴 5

Prototype 패턴

Prototype 패턴의 Prototype은 원형이라는 의미로, 원형이 되는 인스턴스로 새로운 인스턴스를 만드는 방식입니다. 즉, 객체에 의해 생성될 객체의 타입을 결정하는 패턴입니다. 구조 Prototype 새로운 인스턴스를 만들기 위한 메서드를 결정하는 인터페이스입니다. ConcretePrototype 인스턴스를 복사하여 새로운 인스턴스를 만드는 메서드를 실제로 구현합니다. Client 인스턴스 복사 메서드를 사용해서 새로운 인스턴스를 생성합니다. 활용 상황 런타임에 새로운 클래스를 추가하고 삭제할때 유용합니다. 동적으로 클래스에 따라 응용프로그램을 설정해야 할때 유용합니다. Prototype 패턴의 장단점 장점 객체를 생성해주기 위한 별도의 객체 생성 클래스가 필요하지 않습니다. 객체의 각 부분을 ..

Singleton 패턴

Singleton 패턴은 단 하나의 인스턴스만을 생성하여 사용할 수 있게 해주는 패턴입니다. 활용 상황 공통된 객체를 여러개 생성하여 사용해야 할때 유용합니다. 전역에서 사용될 하나의 객체를 만들어야 할때 유용합니다. Singleton 패턴의 장단점 장점 하나의 인스턴스를 사용하기 때문에 메모리 낭비를 방지할 수 있습니다. 하나의 전역 인스턴스를 사용하기 때문에 다른 클래스에서 데이터를 공유할 수 있습니다. 단점 Singleton 인스턴스가 너무 많은 일을 하거나 많은 데이터를 공유시킬 경우, SOLID 원칙 중 SRP, OCP 원칙에 위배됩니다. 수정과 테스트가 어려워집니다. 꼭 필요한 경우가 아니면 지양해야 합니다.

Abstract Factory 패턴

Abstract Factory 패턴은 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴입니다. 구조 AbstractFactory 실제 팩토리 클래스의 공통 인터페이스입니다. ConcreteFactory 구체적인 팩토리 클래스로 AbstractFactory 클래스의 추상 메서드를 오버라이드함으로써 구체적인 제품을 생성합니다. AbstractProduct 제품의 공통 인터페이스입니다. ConcreteProduct 구체적인 팩토리 클래스에서 생성되는 구체적인 제품입니다. 활용 상황 Factory 패턴을 쓰던 상황에서, 팩토리의 종류를 늘려야 할때 유용합니다. 관련성 있는 여러 종류의 객체를 일관된 방식으로 생성해야 할때 유용합니다. Abstract Fa..

Factory 패턴

Factory 패턴은 객체를 생성하는 인터페이스는 미리 정의하되, 인스턴스를 만들 클래스의 결정은 서브 클래스 쪽에서 내리는 패턴입니다. 다시 말해 여러 개의 서브 클래스를 가진 슈퍼 클래스가 있을때 인풋에 따라 하나의 자식 클래스의 인스턴스를 리턴해주는 방식입니다. 이렇게 Factory 패턴에서는 클래스의 인스턴스를 만드는 시점을 서브 클래스로 미루고 인스턴스화에 대한 책임을 객체를 사용하는 클라이언트에서 Factory 클래스로 가져옵니다. 활용 상황 어떤 클래스가 자신이 생성해야 하는 객체의 클래스를 예측할 수 없을때 유용합니다. 생성할 객체를 기술하는 책임을 자신의 서브 클래스가 지정했으면 할때 유용합니다. Factory 패턴의 장단점 장점 객체를 생성하는 코드를 분리하여 클라이언트 코드와 결합도(..

Builder 패턴

Builder 패턴은 생성 인자가 많은 복잡한 인스턴스를 생성하는 방법과 표현하는 방법을 정의하는 Builder 클래스를 따로 분리하여, Builder 객체를 통해 구체적인 객체를 생성하는 패턴입니다. 구조 Builder Prouduct 객체의 요소들을 생성하기 위한 추상 인터페이스를 정의합니다. ConcreteBuilder Builder에서 정의해둔 인터페이스를 구현하고 각 Product의 요소들을 정의, 구축하고 관리하며 복합 인스턴스(Product)가 어떻게 구성되는지에 관한 절차를 정의합니다. Director Builder 인터페이스를 사용하는 객체를 합성(생성)합니다. Product Builder 패턴을 사용하여 생성된 인스턴스입니다. 활용 상황 복합 인스턴스의 생성 알고리즘이 복합 인스턴스의 ..