반응형 분류 전체보기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. 이전 1 ··· 17 18 19 20 21 22 23 ··· 35 다음 반응형