Design Pattern

Design Pattern

[Design Pattern] Bridge Pattern

Bridge Pattern Bridge Pattern이란? 큰 클래스 또는 밀접하게 관련된 클래스들의 집합을 두개의 개별 계층구조(추상화 및 구현)로 나눈 후 각각 독립적으로 개발할 수 있도록 하는 구조 디자인 패턴 Bridge Pattern 구현방법 기초 추상 클래스 정의 추상화에 필요한 작업들을 일반 구현 인터페이스에 선언 추상화 클래스 내에 구현 유형에 대한 참조 필드 추가 (작업들을 참조되는 구현 객체에 위임) 클라이언트 코드 - 구현 객체를 추상화의 생성자에 전달 → 이후부터는 추상화 객체와만 작업 가능 Bridge Pattern 장단점 장점 새로운 추상화들과 구현들을 상호 독립적으로 도입 가능(OCP) 추상화의 상위수준 논리과 구현의 플랫폼 세부 정보에 집중 (SRP) 단점 결합도가 높은 클래..

Design Pattern

[Design Pattern] Adapter Pattern

Adapter Pattern Adapter Pattern이란? 호환되지 않는 인터페이스를 가직 객체들을 협업을 할 수 있도록하는 구조적 디자인 패턴 주요 구성요소 타겟(target) : 클라이언트가 직접적으로 호출하는 인터페이스 어댑티(adaptee) : 아직 호환되지 않은 기존 클래스 클라이언트 : 특정 작업을 요청하는 클래스 어댑터 : 타겟 인터페이스를 구현하여 클라이언트 요청을 어댑티로 전달하는 클래스 Adapter Pattern 구현방법 서로 호환되지 않는 (인터페이스가있는) 클래스를 호환시키기 위해 신규 클라이언트 인터페이스를 선언한다. 신규 인터페이스의 구현객체에 해당 서비스를 호출 가능하도록 만드는 코드 작성한다. 클라이언트에서 서비스를 직접 호출하지않고 신규로 생성한 어댑터 인터페이스를 통..

Design Pattern

[Design Pattern] Prototype Pattern

Prototype Pattern Prototype Pattern이란? 코드를 클래스에 의존시키지 않고 기존 객체들을 복사할 수 있도록 하는 생성 디자인 패턴 하나의 객체의 복사본을 만들고 싶을 경우, 같은 클래스의 새 객체를 생성해서 값을 복사하게 된다면 비공개 값은 복제가 불가하며 해당 클래스에 의존하게 되는 문제가 발생한다. 이를 해결 하기 위한 생성 패턴. 복제를 지원할 클래스에 공통 인터페이스를 선언하여 clone 메서드를 정의한다. references 프로토타입 패턴 프로토타입 패턴 / 디자인 패턴들 / 생성 패턴 프로토타입 패턴 다음 이름으로도 불립니다: 클론, Prototype 의도 프로토타입은 코드를 그들의 클래스들에 의존시키지 않고 기존 객체들을 복사할 수 있도록 하는 생 refactor..

Design Pattern

[Design Pattern] Abstract Factory

Abstract Factory Abstract Factory란? 관련 객체들의 구상 클래스를 지정하지 않고도 객체들의 모음을 생성할 수 있도록 하는 생성패턴 팩터리 매서드가 구성하는 객체들이 추상화된 객체의 집합으로 이루어져 있어 각 객체를 구상할때 각각 커스터 마이징 가능하도록 하는 패턴으로 이해함 (개인적인 이해) Abstract Factory 패턴 적용 코드에 클래스가 있고, 이 클래스의 팩토리 메서드들집합의 기본 책임이 뚜렷하지 않은 경우. Abstract Factory 패턴의 장점 팩토리에서 생성되는 객체의 상호 호환을 보장할 수 있다. 구상 객체와 클라이언트 코드간의 결합을 느슨하게 연결할 수 있다. 객체 생성코드를 한 곳으로 추출하여 코드의 유지보수를 용이하게 할 수 있다. → SRP 기존 ..

Design Pattern

[Design Pattern] Factory Method Pattern

Factory Method Pattern Factory Method Pattern이란? 부모 클래스에서 객체들을 생성할 수 있는 인터페이스를 제공하지만, 자식 클래스들이 생성될 객체들의 유형을 변경할 수 있도록 하는 생성 패턴 ex)물류센터 Factory Method 패턴을 적용하기 좋은 케이스 클라이언트 코드가 작동해야하는 객체들의 정확한 유형들과 의존관계를 모르는 경우 (실제 사용하는 코드와 분리 하여 나머지 코드와는 독립적으로 확장하기 쉬워진다.) 라이브러리 또는 프레임워크의 사용자들에게 컴포넌트를 확장하는방법을 제공하고 싶을 경우 기존 객체를 재구축하는 대신 재사용하여 리소스를 절약하고 싶은 경우. Factory Method Parttern의 장점 느슨한 결합관계 SRP(단일 책임 원칙)을 지키며..

Design Pattern

[Design Pattern] Builder Pattern

Builder Pattern Builder Pattern이란? 객체들을 단계별로 생성할 수 있도록 하는 생성 디자인 패턴 생성자의 매개변수가 많은 경우 불필요한 매개변수까지 값을 채워 호출해야 하는 문제를 해결 할 수있다. 빌더 단계들에 대한 일련의 호출을 디렉터라는 별도의 클래스로 추출하여 관리할 수 있다. Builder 패턴의 이점 아래와 같은 점층적 생성자를 빌더 패턴을 사용하면 제거할 수 있다. class Pizza { Pizza(int size) { ... } Pizza(int size, boolean cheese) { ... } Pizza(int size, boolean cheese, boolean pepperoni) { ... } // … 객체들을 단계별로 생성하거나 생성 단계들을 연기하거나..

Design Pattern

[Design Pattern] Singleton Pattern

Singleton Pattern Sigleton패턴이란? 싱글턴은 클래스에 인스턴스가 하나만 있도록 하면서 이 인스턴스에 대한 전역 접근(액세스) 지점을 제공하는 생성 디자인 패턴입니다. 많은 개발자는 싱클턴을 안티패턴으로 간주합니다. 그래서 자바 코드에서의 사용이 감소하고 있습니다. Singleton의 문제 한번에 두가지의 문제를 동시에 해결함으로써 단일책임 원칙을 위배함 클래스에 인스턴스가 하나만 있도록 합니다. 해당 인스턴스에 대한 전역 접근 지점을 제공합니다 singleton solution 다른 객체들이 싱글턴 클래스와 함께 new 연산자를 사용하지 못하도록 디폴트 생성자를 비공개로 설정하고 생성자 역할을 하는 정적 생성 메서드만든다 public final class Singleton { pri..

Design Pattern

[Design Pattern] 디자인 패턴과 종류

디자인 패턴의 종류 디자인 패턴이란? 일반적인 문제들에 대해 검증된 해결책을 모은것으로, 반복적으로 되풀이되는 디자인 문제들을 해결하기 위하여 맞춤화할 수 있는 청사진들을 미리 만들어 놓은 것과 같다. 더 효율적으로 의사소통하는 데 사용할 수 있는 공통 언어를 정의한다. 디자인 패턴의 종류 생성패턴 : 기존 코드의 재활용과 유연성을 증가시키는 객체 생성 메커니즘을 재공 싱글톤(singleton) 팩토리 메소드(Factory Method) 추상 팩토리(Abstract Factory) 빌더(Builder) 프로토타입(Prototype) 구조패턴 : 구조를 유연하고 효율적으로 유지하면서 객체와 클래스를 더 큰 구조로 조합하는 방법을 설명 어댑터(Adapter) 브릿지(Bridge) 컴포짓(Composite) ..

Bogass
'Design Pattern' 카테고리의 글 목록