본문 바로가기

SW171

GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 5장 행동패턴 :: 템플릿 메서드(Template Method) [템플릿 메서드(Template Method) - 클래스 행동] 알고리즘의 구조 자체는 그대로 놔둔 채 알고리즘 각 단계 처리를 서브클래스에서 재정의할 수 있게 한다. 특정한 요구나 때에 따라서 프레임워크가 정의한 Application 클래스와 Document 클래스를 상속한 서브클래스를 정의하여 새로운 응용프로그램을 구축할 수 있다. 템플릿 메서드는 서브클래스가 오버라이드할 수 있는 추상 연산을 사용하여 알고리즘을 정의한다. 처리가 구체적으로 어떻게 되는지는 Application 클래스의 서브클래스가 정의한다. 추상 연산을 통해서 알고리즘의 일부 단계를 정의함으로써, 템플릿 메서드는 각 단계의 순서는 고정하되 Application 클래스와 Document 클래스의 서브클래스는 필요에 따라 이들 단계의 .. 2020. 5. 13.
GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 5장 행동패턴 :: 전략(Strategy) [전략(Strategy) - 객체 행동] 동일 계열의 알고리즘군을 정의하고, 각 알고리즘을 캡슐화하며, 이들을 상호교환이 가능하도록 만든다. 정책(Policy) 알고리즘을 직접 클래스에 하드코딩하는 것은 다음과 같은 이유로 별로 바람직하지 않다. -줄 분리 코드가 사용자 프로그램에 들어가면 크기도 점점 더 커질 것이고, 유지보수하기도 힘들어진다. -때에 따라서 필요한 알고리즘이 다르기 때문에 모든 알고리즘을 다 제공할 필요는 없다. -알고리즘을 구성하는 문장들이 사용자 코드와 합쳐져 있을 때는 새로운 알고리즘을 추가하거나 기존의 것을 다양화하기가 어렵다. 캡슐화된 알고리즘들을 가리켜 전략이라고 한다. -행동들이 조금씩 다를 뿐 개념적으로 관련된 많은 클래스들이 존재할 때 -알고리즘의 변형이 필요할 때. .. 2020. 5. 12.
GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 5장 행동패턴 :: 상태(State) 상태(State) 2020. 5. 11.
GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 5장 행동패턴 :: 감시자(Observer) 감시자(Observer) 2020. 5. 10.
GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 5장 행동패턴 :: 메멘토(Memento) 메멘토 2020. 5. 9.
GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 5장 행동패턴 :: 중재자(Mediator) [중재자(Mediator) - 객체 행동] 한 집합에 속해있는 객체의 상호작용을 캡슐화하는 객체를 정의한다. 객체들이 직접 서로를 참조하지 않도록 하여 객체 사이의 소결합(loose coupling)을 촉진시킨다. 객체지향 개발 방법론에서는 행동을 여러 객체에게 분산시켜 처리하도록 권하고 있다. 분할했다고는 하지만 시스템은 하나의 거대한 덩어리처럼 동작해야 한다. 또 시스템의 행동을 변경하는 것 역시 매우 어려워진다. 행동이 여러 객체에 걸쳐 분산되어 있기 때문에 시스템의 행동을 수정하려면 여러 클래스들을 재정의해야 할지도 모른다. 별도의 중재자 객체를 활용하면 상호작용과 관련된 행동을 하나의 객체로 모아서 이런 문제를 피해갈 수 있다. 중재자 객체는 객체 그룹 간의 상호작용을 제어하고 조화를 이루는 역.. 2020. 5. 8.