반응형

디자인패턴 16

컴포짓(composite) 패턴

컴포짓 패턴(Composite Pattern) 이란? 그룹 전체와 개별 객체를 동일하게 처리할 수 있는 패턴 클라이언트 입장에서는 "전체" 나 "부분"이나 모두 동일한 컴포넌트로 인식할수 있는 계층 구조를 만든다(Part-Whole Hierarchy) 컴포짓 패턴을 사용하면 클라이언트 측에서 모든 데이터를 모르더라도 복잡한 트리구조를 쉽게 다룰 수 있다. 컴포짓 패턴(Composite Pattern)은 언제 사용하는가? 복합 객체와 단일 객체의 처리 방법이 다르지 않을 경우, 전체-부분 관계로 정의할 수 있다. 새로운 leaf 로써의 클래스를 추가하더라도 클라이언트는 상위 추상화된 인터페이스 만을 바라보기 때문에 OCP 를 준수할 수 있다. 컴포짓 패턴(Composite Pattern) 장점과 단점 장점..

디자인패턴 2022.07.30

브릿지(Bridge)패턴

브릿지 패턴 (Bridge Pattern) 이란? 추상적인 것과 구체적인 것을 구분하는 패턴 구현부에서 추상층을 분리하여 각자 독립적으로 변형이 가능하고 확장이 가능하도록 한다. 기능과 구현에 대해서 두 개의 별도의 클래스로 구현을 한다. 브릿지 패턴의 특징 브리지 패턴은 복합 객체를 다시 재정의하여 추상 계층화된 구조이다. 구성 클래스의 연결 부분을 추상 클래스로 변경한다. 이를 통해 각각의 계층이 독립적으로 확장 및 변경 가능 해진다. 브리지 패턴은 기능을 처리하는 클래스와 구현을 담당하는 추상 클래스로 구별한다. 구현 뿐 아니라 추상화도 독립적 변경이 필요할 때 브릿지 패턴을 사용한다 브릿지는 상속 대신 구현을 통해 분리된 객체를 연결한다. 구현을 통해 객체를 연결하면 객체간 종속 관계를 제거할 수..

디자인패턴 2022.07.20

프로토타입(Prototype) 패턴

프로토타입 패턴 이란? 인스턴스를 사용해 새롭게 생성할 객체의 종류를 명시하여 새로운 객체가 생성될 시점에 인스턴스의 타입이 결정되도록 하는 패턴이다. 적용 가능한 경우 1. 코드가 복사해야 하는 구현 클래스에 의존하지 않아야 하는 경우 프로토타입 패턴을 사용할 수 있다. 이 경우는 코드가 인터페이스를 통해 써드파티 코드와 함꼐 작동할 경우 많이 발생한다. 2. 객체를 초기화 하는 방식만 다를뿐 서브클래스의 수를 줄이려는 경우 프로토타입 패턴을 사용할 수 있다. 장단점 장점 복한 객체를 만드는 과정을 숨길 수 있다 기존 객체를 복제하는 과정이 새 인스턴스를 만드는 것보다 비용(시간 또는 메모리)적인 면에서 효율적일 수도 있다 추상적인 타입을 리턴할 수 있다 단점 복제한 객체를 만드는 과정 자체가 복잡할 ..

디자인패턴 2022.07.08

추상 팩토리 & 팩토리 메서드 패턴 & 팩토리 패턴 정의

팩토리 패턴이란? 클래스의 인스턴스를 만드는 것을 서브클래스에서 결정하도록 한다는 것이다. 즉, new 키워드를 사용하는 부분을 서브클래스에 위임함으로서 객체 생성을 캡슐화하고 구상 클래스에 대한 의존성이 줄어든다는 이점을 얻을 수 있다. 팩토리 패턴에는 2가지 종류가 있다. 팩토리 메서드 패턴 추상 팩토리 패턴 팩토리 메서드 패턴 객체를 생성하는 인터페이스는 미리 정의하되, 객체 생성은 서브클래스(팩토리)로 위임하는 패턴 객체를 생성해서 반환하는 것을 말한다. 즉, 결과값이 객체인 것이다 팩토리는 인터페이스로 추상화되어 구체 팩토리의 변경을 유연하게 한다. 클라이언트는 결과적으로 어떤 객체가 생성될 것인지 알 필요가 없는 것이 특징이다. 추상 팩토리 패턴 서로 연관되거나 의존적인 객체들의 조합을 만드는..

디자인패턴 2022.06.19

팩토리 메소드 패턴(Factory Method Pattern)

팩토리 메소드 패턴이란? 객체를 생성하기 위한 인터페이스를 정의하고, 어떤 클래스의 인스턴스르 생성할지에 대한 처리는 서브클래스가 결정하는 디자인 패턴이다. 팩토리 메소드 패턴을 사용하는 이유? 팩토리 메소드 패턴을 사용하는 이유는 클래스의 생성과 사용의 처리로직을 분리하여 결합도를 낮추기 위한 것이다. - 생성할 객체 타입을 예측할 수 없을 때 - 생성할 객체를 기술하는 책임을 서브클래스에게 정의할때 - 객체 생성의 책임을 서브클래스에 위임시키고 서브클래스에 대한 정보를 은닉하고자 할때 팩토리 메소드의 장점 과 단점 장점 - 인스턴스를 만드는 과정를 수정하지 않고 새로운 인스턴스를 다른 방법으로 생성하도록 확장할 수 있다. - 코드가 간결해진다. 단점 - 클래스가 많아진다. 팩토리 메소드 패턴을 적용할..

디자인패턴 2022.06.11

싱글톤 패턴(singleton pattern)

싱글톤 패턴(Singleton Pattern) 이란? 인스턴스를 오직 하나만 제공하는 패턴을 싱글톤 패턴이라고 한다. 시스템 런타임, 환경 세팅에 대한 정보 등, 인스턴스가 여러개 일 때 문제가 생길 수 있는 경우가 있다. 생성자가 여러차례 호출되어도 실제로 생성되는 객체는 하나고 최초 생성 이후에 호출된 생성자는 최초에 생성한 객체를 리턴한다. 클래스의 인스턴스가 오직 1개만 생성되는 것을 보장하는 디자인 패턴이다. 싱글톤 패턴 문제점 싱글톤 패턴을 구현하는 코드 자체가 많이 들어간다 의존관계상 클라이언트가 구체 클래스에 의존한다 -> DIP를 위반한다 클라이언트가 구체 클래스에 의존해서 OCP 원칙을 위반할 가능성이 높다 테스트하기 어렵다 내부 속성을 변경하거나 초기화 하기 어렵다 private 생성..

디자인패턴 2022.06.04
반응형