본문 바로가기
반응형

분류 전체보기313

메멘토 패턴(Memento Pattern) 메멘토 패턴(Memento Pattern)은 행위(Behavioral) 패턴 중 하나로써 특정 시점에서의 객체 내부 상태를 객체화함으로써 이후 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능을 제공하는 패턴이다. ​Ctrl + Z와 같은 되돌리기 기능을 생각하면 이해하기 쉽다. 어떤 동작을 수행하다가 이전 상태로 돌아가야 할 경우 Ctrl + Z를 눌려서 이전 상태로 복구하는 작업을 해주도록 구현하는 것이 메멘토 패턴이다. ​ 메멘토 패턴의 구조는 다음과 같다. Originator : 현재 상태를 표현하는 State를 가지고 있으며, Memento 객체를 통해 현재 상태를 변경 Memento : Originator의 상태를 나타내는 클래스, Memento를 이용하여 Originator의 상태를.. 2021. 7. 29.
상태 패턴(State Pattern) 상태 패턴(State Pattern)은 행위(Behavioral) 패턴 중 하나로써 객체의 상태에 따라 동일한 동작을 다르게 처리해야 할 때 사용하는 패턴이다. ​객체 상태를 클래스로 나타내어 캡슐화하고 어떤 동작을 수행할 때 객체의 상태를 참조하는 방식으로 처리한다. ​전략 패턴과 비슷한 패턴이지만 차이점이 존재한다. ​ 전략 패턴은 특정한 계열의 알고리즘들을 캡슐화하여 필요에 따라 외부에서 교체하는 패턴이었다면 상태 패턴은 내부에서 어떤 동작을 객체의 상태에 따라 수행하도록 구현하여 적합한 동작을 수행하도록 하는 패턴이다. ​즉, 전략 패턴은 외부(클라이언트)에서의 개입이 요구되지만 상태 패턴은 외부에서의 개입이 요구되지 않는다. ​전략 패턴은 상속을 대체하려는 목적, 상태 패턴은 조건문들을 대체하려.. 2021. 7. 29.
중재자 패턴(Mediator) 중재자 패턴(Mediator)은 행위(Behavioral) 패턴 중 하나로써 수많은 객체들 간의 복잡한 상호작용을 캡슐화하여 객체로 정의하는 패턴이다. ​중재자 의미를 생각하면 쉽다. 객체끼리 서로 직접 통신하지 않고 중재자에게 전달하면 이를 전달해 주는 방식으로 통신하기 때문에 객체 간 의존성을 줄일 수 있으므로 결합도를 감소시킬 수 있다. ​ 중재자 패턴의 구조는 다음과 같다. Mediator : Colleague 객체 간의 통신을 중재자 역할을 통해 관리하는 인터페이스이다. Colleague 객체들은 전달 사항이 생기면 Mediator에게 전달한다. ​ConcreteMediator : Mediator를 구현한 클래스 ​Colleague : 서로 통신할 객체의 인터페이스, Mediator에게 전달사항.. 2021. 7. 29.
옵저버 패턴(Observer Pattern) 옵저버 패턴(Observer Pattern)은 행위(Behavioral) 패턴 중 하나로써 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달해주는 패턴이다. ​옵저버 패턴은 일대다 관계를 가진다. ​주로 분산된 시스템 간에 이벤트를 생성·발행(Publish)하고, 이를 수신(Subscribe)해야 할 때 이용한다. ​ Observer 영어 그대로 관찰자라고 생각하면 이해하기 쉽다. 한 객체를 Observer를 통해 관찰하다가 어떤 이벤트가 발생하면 이를 Observer를 통해 다른 객체들에게 알려주는 것이다. ​ 옵저버 패턴의 구조는 다음과 같다. Subject : Observable이라고도 부르며 이벤트가 발생하는 객체, Observer의 리스트를 가지고 있음, Obs.. 2021. 7. 29.
퍼사드 패턴(Facade Pattern) 퍼사드 패턴(Facade Pattern)은 구조(Structural) 패턴 중 하나로써 복잡한 서브 클래스들을 피해 더 상위에 인터페이스를 구성함으로써 서브 클래스들의 기능을 간편하게 사용할 수 있도록 하는 패턴이다. ​건물의 외관을 뜻하는 퍼사드(Facade)처럼 퍼사드 패턴은 건물의 내부(서브 클래스)들을 건물의 외관(상위의 인터페이스)으로 감싸서 사용할 수 있으며 건물의 내부는 들여다볼 수 없다는 것을 의미한다. ​즉, 복잡한 내부 동작은 알 필요 없고 기능 자체만 사용하면 되는 경우 사용하면 되는 디자인 패턴이다. ​서브 클래스들 사이의 통합 인터페이스를 제공하는 Wrapper 객체가 필요하다. ​ 퍼사드 패턴의 구조는 다음과 같다. Facade : Package의 기능들을 감싸는 상위 인터페이스.. 2021. 7. 28.
책임 연쇄 패턴(Chain of Resposibility Pattern) 책임 연쇄 패턴(Chain of Resposibility Pattern)은 행위(Behavioral) 패턴 중 하나로써 명령 객체와 일련의 처리 객체를 포함하는 디자인 패턴이다. ​요청을 처리할 수 있는 객체가 둘 이상 존재하여 한 객체가 처리하지 못하면 다음 객체로 넘어가는 형태의 패턴이다. ​즉, 요청을 처리할 수 있는 객체들이 사슬(Chain)로 묶여있어서 어떤 요청이 들어왔을 때 첫 번째 객체가 처리할 수 없다면 그 요청을 처리해 줄 수 있을 때까지 연쇄작용으로 다음 객체에게 처리를 양도하는 것이다. ​ 책임 연쇄 패턴의 구조는 다음과 같다. 연결 리스트, 재귀 함수를 생각하면 쉽다. Handler : 요청을 처리해주는 기능을 가지는 객체 인터페이스, 자신이 요청을 처리 못할 시 다음 객체에게 요.. 2021. 7. 28.
방문자 패턴(Visitor Pattern) 방문자 패턴(Visitor Pattern)은 행위(Behavioral) 패턴 중 하나로써 알고리즘을 객체 구조에서 분리시키는 패턴이다. ​보통 클래스에서 객체를 다루는 기능을 클래스 내부에 메서드로 구현하지만 방문자 패턴은 각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구현하는 디자인 패턴이다. ​분리된 처리 기능은 방문자(Visitor)를 통해 각 클래스들을 방문하면서 수행한다. ​객체와 알고리즘을 분리하면 구조를 수정하지 않고도 실질적으로 새로운 동작을 기존의 객체 구조에 추가할 수 있는 장점이 있다. ​객체지향 5원칙(SOLID) 중 하나인 개방-폐쇄 원칙(Open-Closed Principle, OCP)을 적용하는 방법이다. ​ 방문자 패턴의 구조는 다음과 같다. Visito.. 2021. 7. 28.
데코레이터 패턴(Decorator Pattern) 데코레이터 패턴(Decorator Pattenr)은 구조(Structural) 패턴 중 하나로써 주어진 상황 및 용도에 따라 어떤 객체에 책임(기능)을 동적으로 추가하는 패턴이다. ​간단하게 데코레이터의 의미인 장식을 생각하면 쉽다. 기본 기능을 가지는 그릇을 하나 만들어주고 추가할 수 있는 기능(장식품)들을 추가하기 용이하도록 설계하는 디자인 패턴이다. ​즉, 기본 기능을 클래스로 구현해 준 후 상황에 따라 추가될 수 있는 기능들은 기능별로 별도의 클래스로 설계하여 필요할 때마다 기본 기능 클래스 + 추가 기능 클래스의 조합으로 객체를 생성하도록 하는 것이다. ​ 데코레이터 패턴의 구조는 다음과 같다. Component : 기본 기능과 추가될 수 있는 기능을 가지는 인터페이스, 두 기능을 가지도록 설계.. 2021. 7. 28.
컴포지트 패턴(Composite Pattern) 컴포지트 패턴(Composite Pattern)은 구조(Structural) 패턴 중 하나로써 여러 객체를 가진 복합 객체와 단일 객체를 구분 없이 다루고자 할 때 사용하는 패턴이다. ​객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴으로, 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 해준다. ​주로 객체들을 계층 구조로 표현할 수 있으며, 클라이언트가 단일 객체와 복합 객체를 구분하지 않고 사용하고자 할 경우 사용하는 디자인 패턴이다. ​ 간단하게 PC의 파일과 디렉터리의 계층 구조를 생각하면 이해하기 쉽다. 파일은 자신의 밑에 다른 파일이나 디렉터리를 담을 수 없기 때문에 단일 객체이며, 디렉터리는 자신의 밑에 파일이나 디렉터리를 담을 수 있기 때문에 복합 객체로 표현한.. 2021. 7. 28.
반응형