소프트웨어 개발자/디자인패턴 12

[디자인 패턴] 구조 패턴 - Facade (파서드) 패턴

구조 (Structure) 패턴구조 패턴 이란 객체 간의 상호 작용에 대한 구조적 관계를 명확히 정의하여, 코드의 유연성과 재사용성을 높이는 디자인 패턴 주요 패턴으론 다음 사항들이 있다.어댑터 (Adapter) 데코레이터(Decorator) 복합자(Composite) 파셔드(Facade) 플라이웨잇(Flyweight)프록시(Proxy)브릿지(Bridge) 파서드 (Facade) 패턴 이란복잡한 클래스 세트/하위 시스템에 대해 클라이언트 에게 단순화 된 인터페이스를 제공하는 구조적 디자인 패턴아래 그림과 같이 안에는 복잡하지만, 최종 바깥 문 (=단순화된 인터페이스)를 제공하는 것  주로 다음 경우에 많이 사용된다.복잡한 하위 시스템에 대한 제한적이지만 간단한 인터페이스가 필요한 경우하위 시스템을 레이..

[디자인 패턴] 구조 패턴 - 복합자 패턴

구조 (Structure) 패턴구조 패턴 이란 객체 간의 상호 작용에 대한 구조적 관계를 명확히 정의하여, 코드의 유연성과 재사용성을 높이는 디자인 패턴 주요 패턴으론 다음 사항들이 있다.어댑터 (Adapter) 데코레이터(Decorator) 복합자(Composite) 파셔드(Facade)플라이웨잇(Flyweight)프록시(Proxy)브릿지(Bridge) 복합자 (Composite) 패턴 이란Composite 는 객체를 트리 구조로 구성하여, 트리 전체가 하나의 객체인 것처럼 동작 하게 할 수 있는 구조적 디자인 패턴1개, 혹은 그 이상의 객체를 연결 지어 명령을 연결에 따라 전파하여, 하나의 객체 처럼 이용하는 것 등장 배경ex) 여러 제품 주문 요청에 대해 각각 따로 포장을 하고 이 모든걸 모아서 최..

[디자인 패턴] 구조 패턴 - 데코레이터 패턴

구조 (Structure) 패턴구조 패턴 이란 객체 간의 상호 작용에 대한 구조적 관계를 명확히 정의하여, 코드의 유연성과 재사용성을 높이는 디자인 패턴 주요 패턴으론 다음 사항들이 있다.어댑터 (Adapter) 데코레이터(Decorator) 복합자(Composite)파셔드(Facade)플라이웨잇(Flyweight)프록시(Proxy)브릿지(Bridge) 데코레이터 (Decorator) 패턴 이란특정 행동을 수행하는 특수 warpper 객체들을, 메인 객체에 연결시키는 구조적 디자인 패턴 아래 예시 처럼 wrapping을 점진적으로 진행 하여 대상을 확장함 (상속 대신 데코레이터 패턴으로 행동을 확장 가능)  등장 배경 3가지 종류의 알림을 구현하고자 함.  시간이 지날 수록 다양한 조합의 알림 조합 니즈..

[디자인 패턴] 구조 패턴 - 어댑터 패턴

구조 (Structure) 패턴구조 패턴 이란 객체 간의 상호 작용에 대한 구조적 관계를 명확히 정의하여, 코드의 유연성과 재사용성을 높이는 디자인 패턴 주요 패턴으론 다음 사항들이 있다.어댑터 (Adapter) 데코레이터(Decorator)복합자(Composite)파셔드(Facade)플라이웨잇(Flyweight)프록시(Proxy)브릿지(Bridge) 어댑터 (Adapter) 패턴 이란서로 호환되기 힘든 인터페이스를 지닌 클래스들이 함꼐 동작할 수 있도록 하는 구조적 패턴 아래 예시 처럼 자동차를 레일에서도 다를 수 있도록 어댑터 를 구성하는 패턴 등장 배경얻은 데이터 (xml)을 분석툴(json 데이터에만 동작)에 넣고 싶음어댑터가 필요 ! 구조1. Client 클래스 : 기존 비즈니스 로직을 포함 하..

[디자인패턴] 행동 패턴 - 상태(State) 패턴

행동(Behavioal) 패턴객체들이나 클래스들 사이에 상호 작용이나 책임(역할)분배를 하는 방법에 대한 패턴. 여러 객체에 책임을 분배하고, 객체 간의 종속도 최소화 한다.  주요 패턴으론 다음 사항들이 있다.옵저버(Observer) 커맨드(Command)상태(State) 전략(Strategy)책임 연쇄(Chain_Of_Responsibility)반복자(Iterator)중재자(Mediator)반복자(Visitor) 상태 (State) 패턴 이란State 패턴은 행동 패턴 중 하나로 내부 상태가 변경될 때 객체의 행동을 교체한다. 객체가 상태(값)을 변경하여, 행동의 변화를 유발함으로서 클래스 자체가 변경된 것 처럼도 보일 수 있다.  등장 배경[초안, 검토, 출판본]의 상태를 가진 문서 객체가 있다고..

[디자인패턴] 행동 패턴 - 전략(Strategy) 패턴

행동(Behavioal) 패턴객체들이나 클래스들 사이에 상호 작용이나 책임(역할)분배를 하는 방법에 대한 패턴. 여러 객체에 책임을 분배하고, 객체 간의 종속도 최소화 한다.  주요 패턴으론 다음 사항들이 있다.옵저버(Observer) 커맨드(Command)상태(State) 전략(Strategy) 책임 연쇄(Chain_Of_Responsibility)반복자(Iterator)중재자(Mediator)반복자(Visitor) 전략 (Strategy) 패턴이란행동 패턴 방법 중 하나로 동일한 레벨의 다양한 알고리즘을 정의 및 캡슐화 하고, 런타임시 동적으로 해당 알고리즘을 선택할 수 있게 하는 디자인 패턴이다. 이로서, 복잡한 알고리즘 내용을 비즈니스 로직에서 분리 하여 감출 수 있고, 클라이언트는 런타임 중 자..

[디자인패턴] 행동 패턴 - Command 패턴

행동(Behavioal) 패턴객체들이나 클래스들 사이에 상호 작용이나 책임(역할)분배를 하는 방법에 대한 패턴. 여러 객체에 책임을 분배하고, 객체 간의 종속도 최소화 한다.  주요 패턴으론 다음 사항들이 있다.옵저버(Observer) 커맨드(Command) 상태(State) 전략(Strategy) 책임 연쇄(Chain_Of_Responsibility)반복자(Iterator)중재자(Mediator)반복자(Visitor) Command (커맨드) 패턴이란커맨드 패턴은 행동 패턴 중 하나로, 요청을 요청 정보를 가지고 있는 독립 실행 객체로 전환하는 패턴을 말한다. 이 변환을 통해, 요청을 메서드 파라미터로 넘기거나, 요청의 실행을 지연 또는 큐에 넣기, 되돌리기 기능 등을 지원 가능한 패턴한다. 등장 배..

[디자인패턴] 행동 패턴 - 옵저버 패턴

행동(Behavioal) 패턴객체들이나 클래스들 사이에 상호 작용이나 책임(역할)분배를 하는 방법에 대한 패턴. 여러 객체에 책임을 분배하고, 객체 간의 종속도 최소화 한다.  주요 패턴으론 다음 사항들이 있다.옵저버(Observer) 커맨드(Command) 상태(State) 전략(Strategy) 책임 연쇄(Chain_Of_Responsibility)반복자(Iterator)중재자(Mediator)반복자(Visitor) 옵저버 패턴 이란?Observer 패턴은 관찰 중인 개체(주제, subject)에 이벤트가 발생시, 다른 개체들(구독자, observer)에 알리는 메커니즘으로 주제에 변화가 있으면 갱신 내용을 observer에 전달한다. 한 객체의 상태가 바뀌었을 때, 그 객체에 의존하는 다른 객체에..

[디자인패턴] 생성 패턴 - Prototype 패턴

생성 (Creational) 패턴 다양한 상황에서의 객체의 생성 방식을 결정하는 디자인 패턴 주요 패턴으론 다음 사항들이 있다.팩토리 메서드 (Factory Method)추상 팩토리 (Abstract Factory)빌더(Builder)싱글톤(SingleTon)프로토타입(Prototype)  템플릿메서드(TemplateMethod) 프로토 타입 패턴 이란? 생성 패턴의 한 방법으로, 객체를 생성할 때 클래스를 이용하여 새로운 객체를 생성하는 것이 아닌, 기본 템플릿(이미 존재하는 객체)을 복제하여 생성하는 디자인 패턴주로 객체를 생성하는데 비용이 큰데, 이를 빈번하게 생성해야 하는 경우 주로 사용됨사실 Python에서는 이미 deepcopy() 로 대체가능함. 왜 사용하는가?만약 똑같은 A1 객체, A2 ..

[디자인패턴] 생성 패턴 - 싱글톤 (Singleton) 패턴

생성 (Creational) 패턴다양한 상황에서의 객체의 생성 방식을 결정하는 디자인 패턴 주요 패턴으론 다음 사항들이 있다.팩토리 메서드 (Factory Method)추상 팩토리 (Abstract Factory)빌더(Builder)싱글톤(SingleTon) 프로토타입(Prototype)  템플릿메서드(TemplateMethod) 싱글톤 패턴 이란?싱글톤 패턴(Singleton Pattern) 이란 클래스에 하나의 객체(인스턴스)로 모든 인스턴스와 공유하는 패턴싱글턴 객체는 맨 처음 요청될 때만 초기화를 진행되며, 해당 인스턴스에 대해 전역 접근 지점이 존재함  객체 생성과 초기화객체의 생성과 초기화에는 __new__와 __init__ 이라는 메서드가 사용 __new__ : 객체의 생성 과정시 호출__i..