목록OOP 디자인 패턴/생성패턴 (5)
싱글턴 패턴 (Singleton) 싱글턴은 클래스에 인스턴스가 하나만 있도록 하면서 이 인스턴스에 대한 전역 접근(액세스) 지점을 제공하는 생성 디자인 패턴입니다. 싱글턴 패턴은 다음의 두가지 상황을 구현합니다. 클래스의 인스턴스가 하나만 있게 합니다 ⇒ 객체는 최초 1회 생성되고, 다른 객체의 생성을 시도했을 때 똑같은 객체를 돌려받게 됩니다. 물론 new 키워드를 이용하여 객체를 생성하면 무조건 새 객체를 돌려받게 되므로 일반적인 생성방법으로는 구현할 수 없습니다. 해당 인스턴스에 대한 전역접근 지점 제공 ⇒ 이는 마치 전역변수와 같은 기능을 하는데, 덮어씌워질 위험이 있는 전역변수와 다르게 이러한 상황에 대한 보호를 제공합니다. 위의 상황중 한가지만 해결해도 싱글턴 패턴이라 부를 수 있습니다. 대표..
프로토타입 패턴 (Prototype) clone 이라는 이름으로도 불립니다. 프로토타입은 코드를 그들의 클래스들에 의존시키지 않고 기존 객체들을 복사할 수 있도록 하는 생성 디자인 패턴입니다. 복제를 지원하는 객체를 프로토 타입 이라고 합니다. 당신의 객체들에 수십 개의 필드와 수백 개의 가능한 설정들이 있는 경우 이를 복제하는 것이 서브클래싱의 대안이 될 수 있습니다. 프로토타입 패턴은 실제로 복제되는 객체들에 복제 프로세스를 위임합니다. 프로토타입은 객체들(복잡한 객체 포함)을 그의 특정 클래스들에 결합하지 않고 복제할 수 있도록 하는 생성 디자인 패턴입니다. 프로토타입 구성요소 Prototype 클래스 : 복제를 당할 객체를 정의합니다. 대부분 단일 clone 메서드로 이루어져 있습니다. Compo..
빌더 패턴 (Builder) 빌더는 복잡한 객체들을 단계별로 생성할 수 있도록 하는 생성 디자인 패턴입니다. 이 패턴을 사용하면 같은 제작 코드를 사용하여 객체의 다양한 유형들과 표현을 제작할 수 있습니다. 빌더 패턴을 사용하는 것은 제품에 매우 복잡하고 광범위한 설정이 필요한 경우에만 의미가 있습니다. 점층적 생성자의 제거 class Pizza { Pizza(int size) { ... } Pizza(int size, boolean cheese) { ... } Pizza(int size, boolean cheese, boolean pepperoni) { ... } // … 위의 코드는 여러개의 생성자를 오버로딩하여 객체 생성시, 입맛에 맞는 피자를 만드는 코드입니다. 이렇게 생성자를 오버로딩하면 생성자..
추상 팩토리 패턴 (Abstract Factory) 추상 팩토리는 관련 객체들의 구상 클래스들을 지정하지 않고도 관련 객체들의 모음을 생성할 수 있도록 하는 생성패턴입니다다. 추상 팩토리 구성요소 추상 공장 인터페이스 : 공장에서 생산할 수 있는 제품들을 정의합니다. 추상 제품 인터페이스 : 제품들이 가져야할 메서드를 정의합니다. 구체적인 공장 클래스 : Korean 제품을 생산하는 공장, USA 제품을 생산하는 공장등 각 제품들의 하나의 variant(변형)을 생산하는 공장클래스 입니다. 구체적인 제품 클래스 : 제품 인터페이스를 상속받아서 메서드를 구현합니다. 의자면 sitOn(앉을 수 있다) 등. 클라이언트 코드 : 구체적인 공장을 하나 인수로 받아 제품들을 생성하고, 비즈니스 로직을 수행합니다. ..
팩토리 메서드 패턴 가상 생성자, Factory Method 라고도 불립니다. 팩토리 메서드는 부모 클래스에서 객체들을 생성할 수 있는 인터페이스를 제공하지만, 자식 클래스들이 생성될 객체들의 유형을 변경할 수 있도록 하는 생성 패턴입니다. 팩토리 메서드 구성요소 제품 인터페이스 : 제품 Interface는 그 제품이 수행하는 고유한 operation을 갖고 있습니다. 제품 생성자 : 팩토리메서드를 추상클래스로 정의하고, someOperation 메서드를 갖고, 내부에서 제품을 만들고 제품과 상호작용 합니다. 특정 제품 : 제품 Interface를 상속받아서 operation 메서드를구현합니다. 즉정 제품 생성자 : 특정제품 생성자는 특정 제품에 대한 팩토리 메서드를 구현합니다. 특정제품 생성자 1이면,..