본문 바로가기

GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software)47

GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 6장 결론(2/2) [6.3 패턴 커뮤니티] [6.4 초대의 글] [6.5 책을 마무리하며] 2020. 5. 17.
GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 6장 결론(1/2) [Chapter 6. 결론] [6.1 디자인 패턴에서 무엇을 기대할 수 있는가?] [6.2 간략한 역사] 2020. 5. 16.
GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 5장 행동패턴에 대한 논의 행동 패턴에 대한 논의] 많은 행동 패턴의 주된 목적이 바로 다양성을 캡슐화하려는 것이다. 행동 패턴에서는 일반적으로 양상을 캡슐화한 객체를 나타내는 추상 클래스를 정의하고, 이 클래스의 이름이 곧 패턴의 이름이 된다. -Strategy 객체는 알고리즘을 캡슐화 -State 객체는 상태에 의존적인 행동을 캡슐화 -Meditator 객체는 객체 사이의 프로토콜을 캡슐화 -Iterator 객체는 집합 객체의 구성요소에 접근하거나 원소들을 순회하는 방법을 캡슐화 대부분 패턴에서는 두 가지 종류의 객체를 정의한다. 이 다양성을 보인 특성을 캡슐화한 객체와 이렇게 정의한 새로운 객체를 이용하는 기존의 객체이다. 모든 패턴이 클래스간의 정적 의사소통 방법을 정의하는 것은 아니다. 몇몇 패턴에서는 항상 객체를 인자로.. 2020. 5. 15.
GoF의 디자인 패턴(Design Patterns: Elements of Reusable Object-Oriented Software) - 5장 행동패턴 :: 방문자(Visitor) [방문자(Visitor) - 객체 행동] 객체 구조를 이루는 원소에 대해 수행할 연산을 표현한다. 연산을 적용할 원소의 클래스를 변경하지 않고도 새로운 연산을 정의할 수 있게 한다. 연산들이 여러 노드 클래스에 걸쳐 분산되어 있어 시스템의 이해 및 유지보수, 변경 작업이 어렵다는 점이다. 타입 점검 코드가 장식 인쇄 코드 또는 흐름 분석 코드와 섞이면 혼란스럽다. 게다가, 연산 하나를 새로 추가하려면 관련된 모든 클래스를 재컴파일해야 할 때도 태반이다. 문제를 해결하는 방법으로 각 (노드) 클래스에서 서로 관련된 연산들을 추려 모아 별도로 하나의 객체로 묶는다. 이런 객체를 가리켜 방문자라고 한다. 그리고 이 방문자 객체를 추상 구문 트리의 원소에 전달하여 순회시키는 것이다. 트리의 원소가 방문자를 “수.. 2020. 5. 14.
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.