[디자인 패턴] 중재자 패턴

중재자 패턴(Mediator Pattern) 객체지향의 특징은 **단일 책임 원칙(SRP)**에 의해 하나의 객체는 하나의 책임(행동)을 갖습니다. 또한 클래스 재사용을 극대화하기 위해 작은 클래스를 많이 만들게 됩니다. 객체지향 프로그램은 다수의 작은 클래스간의 결합을 통해 하나의 행동을 합니다. 즉 작은 행동들이 모여 큰 하나의 행동을 만듭니다. 하지만 다수의 클래스가 다수의 클래스와의 관계가 이어지면 복잡한 결합 관계로 성장합니다. 중재자 패턴은 다수의 클래스 간에 설정된 복잡한 관계를 느슨한 관계로 개선하기 위한 패턴입니다. 한 모임에는 총무 역할의 단일 사람이 있고, 한 반에는 단일 사람의 반장이 있는 것과 비슷합니다....

December 13, 2020 · 4 min · Pacientes

[디자인 패턴] 관찰자 패턴

관찰자 패턴(Observer Pattern) 관찰자 패턴은 매우 유용하고 자주 사용되는 패턴입니다. 어떤 특정한 상태 또는 조건에 따라 코드의 로직이 달라지는 경우, 그 상태와 조건을 지속적으로 확인해야 합니다. 일반적으로 아래와 같은 형태로 작성하곤 합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 while(true) { if (status == A) { doCodeA(); break; } else if (status == B) { doCodeB(); break; } } 어떤 특정한 상태 status의 값을 지속적으로 확인하고, 해당 경우에 로직을 분기합니다....

December 13, 2020 · 3 min · Pacientes

[디자인 패턴] 책임 연쇄 패턴

책임 연쇄 패턴(Chain of Responsibility) 책임 연쇄 패턴 또는 체인 패턴은 객체 메세지의 송신과 수신을 분리해서 처리합니다. 어떤 조건에 따라 코드가 분기되는 이벤트에 많이 활용합니다. 절차지향 개발에서는 조건문(if 또는 switch)을 사용하지만, 객체지향 개발에서는 객체를 활용하여 이벤트 핸들러(Event Handler)를 구현합니다. 핸들러는 크게 정적 핸들러(Static Handler), 동적 핸들러(Dynamic Handler)로 구분합니다. 정적 핸들러: 코드에서 미리 결정된 동작을 수행합니다. 동적 핸들러: 런타임 상황에서 결정되는 동작을 수행합니다. 책임 연쇄 패턴 구조 핸들러는 이벤트의 처리 로직을 분리하여 행동을 독립적으로 관리합니다....

December 9, 2020 · 5 min · Pacientes

[디자인 패턴] 방문자 패턴

방문자 패턴(Visitor Pattern) 방문자 패턴은 공통된 객체의 데이터 구조와 처리를 분리하는 패턴입니다. 서로의 메서드가 재귀적으로 호출되는 등 복잡한 호출 관계를 갖고 있어 이해하기 어려운 패턴 중 하나입니다. 이처럼 복잡한 호출 관계를 갖는 이유는 데이터 객체와 작업 객체를 분리하기 때문입니다. 방문자 패턴의 구조 방문자 패턴은 데이터 객체와 작업 객체가 분리되어 있습니다. 따라서 두 가지 분리된 객체가 존재합니다. 원소 객체(Element): 원소 객체는 데이터를 보관하는 구조 클래스입니다. 방문자 객체(Visitor) 원소 객체의 호출 메서드에서 방문자 객체를 전달하고, 전달 받은 방문자 객체의 작업 메서드를 호출합니다....

December 9, 2020 · 4 min · Pacientes

[디자인 패턴] 명령 패턴

명령 패턴(Command Pattern) 일반적인 객체는 프로퍼티(변수)와 메서드(함수)로 구성됩니다. 하지만 명령 패턴을 사용하면 객체의 행동(메서드 호출) 또한 객체로 캡슐화가 가능합니다. 명령 패턴은 동작을 하나의 객체로 캡슐화하여 행위를 실행합니다. 명령 패턴 구조 명령 패턴은 실제 작업을 수행하는 객체와 이를 실행하는 객체로 분리합니다. 명령 패턴은 복수의 명령을 처리하기 위해 객체 간 관계를 정의합니다. 또한 명령 패턴은 다음과 같은 4가지 구성 요소를 갖고 있습니다. 인터페이스(Interface) 동일한 명령 구조와 호출을 위해 인터페이스를 정의합니다. 명령(Command) 명령으로 실행되는 실제 객체들을 구현합니다....

December 8, 2020 · 3 min · Pacientes