본문 바로가기
반응형

IT 개인 공부95

중재자 패턴(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.
브릿지 패턴(Bridge Pattern) 브릿지 패턴(Bridge Pattern)은 구조(Structural) 패턴 중 하나로써 구현부에서 추상층을 분리하여 각자 독립적으로 변형할 수 있게 하는 패턴이다. ​간단하게 얘기하면 다양한 기능과 구현을 가질 수 있는 주제? 일 경우 기능 부분과 구현 부분을 분리하여 각각 추상화를 통해 확장 및 유지 보수가 용이하도록 설계하는 디자인 패턴이다. ​ 브릿지 패턴의 구조는 다음과 같다. Abstraction : 기능 부분의 추상 인터페이스, 구현 부분의 클래스를 통해 구현 부분의 메서드를 호출 RefinedAbstraction : Abstraction 인터페이스의 기능을 확장한 클래스 Implementor : 구현 부분의 추상 인터페이스, Abstracion의 기능을 구현하기 위한 기능을 정의 Concre.. 2021. 7. 27.
추상 팩토리 패턴(Abstract Factory Pattern) 추상 팩토리 패턴은 생성(Creational) 패턴 중 하나로써 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴이다. ​간단하게 얘기하면 관련성이 높은 여러 종류의 객체를 따로 생성하지 않고 팩토리라는 공장을 통해 생성하는 디자인 패턴이다. ​ 추상 팩토리 패턴의 구조는 다음과 같다. 이전에 공부한 팩토리 메서드 패턴과 이름이 굉장히 비슷하다. 두 패턴 모두 객체의 생성을 캡슐화를 통해 Factory 클래스에게 위임하여 객체를 생성하는 공통점이 있지만 팩토리 메서드 패턴은 한 팩토리당 한 종류의 객체만 생성할 수 있고 추상 팩토리 패턴은 한 팩토리에서 서로 연관된 여러 종류의 객체를 생성할 수 있다는 차이가 존재한다. ​ 무슨 말인지 이해가 안 .. 2021. 7. 27.
반응형