본문 바로가기

객체 지향 프로그래밍/디자인 패턴5

[구조 패턴] 퍼사드 패턴 (Façade Pattern) 이란? 퍼사드 패턴 이란? • Façade는 ‘건물의 정면’, ‘건물의 외관’의 뜻으로 건물 외벽에서 보면 안의 구조는 보이지 않음 -많은 서브 시스템(내부 구조)을 거대한 클래스(외벽)으로 감싸서 편리한 인터페이스 제공 • 서브시스템에 있는 인터페이스들에 대한 통합된 인터페이스를 제공 • 서브시스템을 더 쉽게 사용할 수 있도록 만드는 더 높은 수준의 인터페이스를 제공 퍼사드 패턴 구조 Façade System 클래스를 사용하여 Client 클래스에서 사용할 인터페이스를 구현 System 특정 목적을 위한 여러 개의 클래스 존재 Client Façade 클래스를 통해 System 클래스에 접근 가능 사용 예시 • 영화관에서 영화를 상영하고 있는 시스템이 있다고 가정하고, 영화를 상영하기 위한 필요한 절차는 아래.. 2022. 5. 30.
[구조 패턴] 데코레이터 패턴 (Decorator Pattern) 이란? 데코레이터 패턴 이란? • 객체의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있게 하는 패턴 • 주어진 상황 및 용도에 따라 어떤 객체에 책임(기능)을 동적으로 추가하는 패턴 • 클래스의 요소들을 계속해서 수정하면서 사용하는 구조에 적합 장점 단점 기존 코드를 수정하지 않고 확장 가능 의미 없는 객체들이 추가될 수 있음 구성과 위임을 통해 실행 중 새로운 행동 추가 가능 너무 많은 사용은 코드의 복잡성 증가 데코레이터 패턴 구조 Component 실질적인 인스턴스를 컨트롤하는 역할 ConcreteComponent Component의 실질적인 인스턴스의 부분으로 책임의 주체의 역할 Decorator Component와 ConcreteDecorator를 동일시 하도록 해주는 역할 ConcreteDeco.. 2022. 5. 26.
[생성 패턴] 팩토리 메서드 패턴 (Factory Method Pattern) 이란? 팩토리 메서드 패턴 이란? • 객체를 생성할 때, 어떤 클래스의 인스턴스를 만들지 서브 클래스에서 결정하는 디자인 패턴 • 여러 개의 서브 클래스를 가진 슈퍼 클래스가 있을 때, 인풋에 따라 하나의 자식 클래스의 인스턴스를 리턴 • 다양한 구현체 (Product)가 있고, 그 중에서 특정한 구현체를 만들 수 있는 다양한 팩토리(Creator)를 제공 Creator Product 타입의 객체를 반환하는 팩토리 메서드를 선언하는 클래스 팩토리 메서드를 기본적으로 구현, ConcreteProduct 객체를 반환 ConcreteCreator 팩토리 메서드를 재정의하여 ConcreteProduct의 인스턴스를 반환 Product 팩토리 메서드가 생성하는 객체의 인터페이스 정의 ConcreteProduct Prod.. 2022. 5. 26.
[생성 패턴] 싱글톤 패턴 (Singleton Pattern) 이란? 싱글톤 패턴 이란? • 어플리케이션이 시작될 때 어떤 클래스가 최초에 한 번만 메모리를 할당(static)하고 해당 메모리에 인스턴스를 만들어 사용 • 인스턴스가 필요할 때 똑같은 인스턴스를 만들지 않고 인스턴스를 활용 • 생성자가 여러 번 호출되어도 실제 객체는 하나이며 최초 생성된 객체를 계속 반환 * 실제로 단 하나만 존재해야만 하는 물건이 있을 때 사용 회사에서 단 하나의 프린터를 공유해서 쓰는 것과 유사하다. 싱글톤 패턴 장단점 장점 • 객체를 한 번만 생성하고 반환하기 때문에 메모리 영역을 한 번만 할당 (메모리 낭비 방지) • 싱글톤으로 구현한 인스턴스는 ‘전역’이므로 다른 클래스의 인스턴스와 데이터 공유 가능 단점 • 싱글톤 인스턴스가 혼자 너무 많은 일을 하거나 공유하면 다른 클래스와의 .. 2022. 5. 26.