본문 바로가기

전체 글

(65)
Memento Design Pattern Behavioral Pattern) Memento Design Pattern 객체의 상태 정보를 가지는 클래스르 따로 생성하여 객체의 상태를 저장 or 이전 상태로 복원 가능하게 해주는 DP 캡슐화를 위반하지 않고 객체의 내부 상태를 캡쳐하고 외부화함 (+) 단, 이전 상태의 객체를 저장하기 위한 Originator가 클 경우 많은 메모리가 필요 장점 객체의 상태를 저장 및 복원하는 기능을 분리하여 복잡성 감소 객체의 상태를 보관하여 undo/redo, ctrl+z 등의 기능 쉽게 구현 가능 단점 상태를 저장 및 복원하는 데 많은 메모리 공간 필요 객체의 상태가 매우 큰 경우 복원하는데 오랜 시간 필요 Originator : 현재 내부 state 가지고 있음 : Memento 객체와 memento 객체 ..
State Design Pattern Behavioral Pattern) State Design Pattern 상태(state)란? 객체가 시스템에 존재하는 동안 객체가 가질 수 있는 어떤 조건 또는 상황 객체는 어떤 상태에 있는 동안 어떤 작업을 수행 or 특정 이벤트 발생을 기다림 상태 디자인 패턴은 객체 내부의 상태에 따라 동작을 변경해야할 때 사용하는 DP 객체의 특정 상태를 클래스로 선언하고 클래스에서는 해당 상태에서 할 수 있는 행위들을 메서드로 정의 -> 이러한 각 상태 클래스들을 인터페이스로 캡슐화하여 클라이언트에서 인터페이스 호출 장점 하나의 객체에 대한 여러 동작 구현해야 할 때 상태 객체만 수정하므로 동작의 추가, 삭제 및 수정이 간단 State 패턴을 사용하면 객체의 상태에 따른 조건문(if/else, switch)이 ..
Mediator Design Pattern Behavioral Pattern) Mediator Design Pattern 객체들 간 상호작용 행위를 정리하여 모은 mediator 객체를 따로 두어 관리하는 DP 모든 클래스 간 복잡한 로직(상호작용)을 캡슐화 하여 하나의 클래스에 위임하여 처리 M : N 관계에서 M : 1 관계로 복잡도를 떨어뜨려 유지 보수 및 재사용 및 확장성에 유리한 DP 언제 사용? 객체들 간의 관게가 매우 복잡하여 객체의 재사용에 부담인 경우 장점 객체들 간 수정 없이 관계 수정 가능 객체들 간 관계의 복잡도 및 의존성 및 결합도 감소 Mediator : Colleague 객체 간의 상호작용을 위한 인터페이스 정의 ConcreteMediator : Mediator의 인터페이스를 구현하여 Colleague 객체 간의 상호작..
Visitor Design Pattern Behavioral Pattern) Visitor Design Pattern 개방-폐쇄 원칙 적용하는 DP 실제 로직을 가지고 있는 객체(visitor)가 로직을 적용할 객체(element)를 방문하면서 실행하는 DP (즉, 로직과 구조를 분리하는 패턴 -> 구조 수정 없이 새로운 동작을 기존 객체 구조에 추가 가능) 비슷한 종류의 객체들을 가진 그룹에서 작업을 수행해야할 때 주로 사용되는 패턴 Visitor : 명령 수행하기 위해 필요한 메소드를 정의하는 인터페이스 ConcreteVisitor : 명령을 수행하는 메소드를 구현 Element : Visitor를 사용할 수 있는지 확인하는 accept 메소드를 정의하는 인터페이스 ConcreteElement : Visitable에서 정의된 accept 메..
Template Method Design Pattern Behavioral Pattern) Template Method Design Pattern 상위 클래스에서 처리의 흐름을 제어하며, 하위 클래스에서 처리의 내용을 구체화하는 DP 공통 사항은 상위 클래스에 구현, 각 객체마다 다른 부분은 하위 클래스에 구현 상속을 통한 확장 개발 방법으로 코드 중복 감소, refactoring에 유리 장점 코드 중복 감소 자식 클래스의 역할을 감소시키면서 핵심 로직 관리 용이 객체 추가 및 확장 쉽게 가능 단점 추상 메소드가 너무 많아지면 클래스 관리 복잡 추상 클래스와 구현 클래스 간 복잡성 증대 Abstract Class : 추상 클래스로 TemplateMethod 정의 Concrete Class : 부모 클래스에서 abstract로 정의된 TemplateMethod..
Strategy Design Pattern Behavioral Pattern) Strategy Design Pattern 전략을 쉽게 바꿀 수 있도록 해주는 디자인 패턴 전략이란? 어떤 목적을 달성하기 위해 일을 수행하는 방식, 비즈니스 규칙, 문제 해결 알고리즘 쉽게 전략을 바꿔야 할 필요가 있는 경우 많이 발생 같은 문제를 해결하는 여러 알고리즘이 클래스별 캡슐화되어 있고 이들이 필요할 때 교체할 수 있도록 함으로써 동일한 문제를 다른 알고리즘으로 해결할 수 있게 하는 DP Key Point 같은 문제를 해결하는 여러 알고리즘이 클래스별 캡슐화되어 있고 이들이 필요할 때 교체할 수 있도록 함으로써 동일한 문제를 다른 알고리즘으로 해결 가능하게 하는 DP Strategy : 인터페이스나 추상 클래스로 외부에서 동일한 방식으로 알고리즘을 호출하는..
Observer Design Pattern Behavioral Pattern) Observer Design Pattern 상태 변화를 관찰하는 관찰자 객체를 생성하여 사용하는 DP 데이터 변경 발생시, 상대 클래스 및 객체에 의존하지 않으면서 데이터 변경을 통보하고자 할 때 통보 대상 객체의 관리를 subject 클래스와 observer 인터페이스로 일반화고 데이터 변경을 통보하는 클래스(ConcreteSubject) 는 통보대상 클래스/객체(ConcreteObserver)에 대한 의존성 제거 가능 => Observer DP는 통보 대상 클래스 or 객체의 변경에도 ConcreteSubject 클래스 수정 없이 사용 가능 Observer : 데이터의 변경을 통보 받는 인터페이스 : 즉, Subject에서는 Observer 인터페이스의 update..
Iterator Design Pattern Behavioral Pattern) Iterator Design Pattern 어떠한 객체의 집합을 순서대로 명령을 처리할 수 있게 해주는 DP 내부 구조를 노출하지 않고 집합의 요소에 접근 & 이동 가능하도록 도움이 되는 DP 현재 요소를 추적하고 다음 요소로 이동하는 방법을 제공하는 별도의 iterator 객체를 사용하여 이 작업 수행 Client 객체가 컨테이너의 내부 표현에 대한 지식 없이 컨테이너의 내용에 순차적으로 접근 가능 Iterator : 순서대로 객체를 검색하는 인터페이스 정함 ConcreateIterator : Iterator에서의 인터페이스를 구현 Aggregate : Iterator의 역할을 만드는 인터페이스를 정함 ConcreateAggreagate : Aggregate에서의 인..