여기서는 원문중 Suggest Navigation 에 대해 번역 & 정리
Suggested Navigation - 패턴 학습 순서에 대해서 ¶
DesignPatterns로 Pattern 스터디를 처음 시작할때 보면, 23개의 Pattern들을 navigate 할 방향을 결정할만한 뚜렷한 기준이 없음을 알 수 있다. 이 책의 Pattern들은 Creational, Structural, Behavioral 분류로 나누어져 있다. 이러한 분류들은 각각 다른 성질들의 Pattern들을 빨리 찾는데 도움을 주긴 하지만, 패턴을 공부할때 그 공부 순서에 대해서는 구체적인 도움을 주지 못한다.
Pattern들은 각각 독립적으로 쓰이는 경우는 흔치 않다. 예를 들면, IteratorPattern은 종종 CompositePattern 과 같이 쓰이고, ObserverPattern과 MediatorPattern들은 전통적인 결합관계를 형성하며, SingletonPattern은 AbstractFactoryPattern와 같이 쓰인다. Pattern들로 디자인과 프로그래밍을 시작하려고 할때에, 패턴을 사용하는데 있어서 실제적인 기술은 어떻게 각 패턴들을 조합해야 할 것인가에 대해 아는 것임을 발견하게 될 것이다.
DesignPatterns 의 저자들은 Pattern들간의 연결관계들을 제시하지만, 이것이 또한 Pattern들에 대한 navigation이 되지는 못한다. 책 전반에 걸쳐 많은 패턴들이 연결 관계를 보여주며, 또한 그것은 다른 패턴들 학습하기 이전에 공부하는데 도움을 주기도 한다. 그리고 어떤 Pattern들은 다른 패턴들에 비해 더 복잡하기도 하다.
여러해가 지난 지금, DPSG는 23주 기간의 pattern들을 공부하는 스터디 그룹들을 가져왔다. 각각의 그룹들은 스터디 그룹을 위한 navigation 에 대해 실험하고, 토론하고, 수정했다. 여기서 제안된 navigation은 매 새로운 스터디 그룹들에게 이용된다. 여기서 제안된 navigation은 Pattern 초심자들에게 더 지혜롭게 하나의 패턴에서 다른 패턴으로 이동하게끔 도와줄 것이며, 효율적으로 23개의 Pattern들을 터득하는데 도움을 줄 것이다. 물론 이 navigation은 계속 개선해 나갈 것이다. 그리고 당신이 제안하는 개선책 또한 환영한다.
Strategy - Behavioral ¶
StrategyPattern 또한 책 전반에 걸쳐 빈번하게 이용된다. 이 패턴에 대해 일찍 알아둠으로써, 다른 패턴을 이해하는데 도움을 줄 것이다.
Composite - Structural ¶
CompositePattern은 여러부분에서 나타나며, IteratorPattern, ChainOfResponsibilityPattern, InterpreterPattern, VisitorPattern 에서 종종 쓰인다.
Template Method - Behavioral ¶
앞에서의 IteratorPattern 의 예제코드에서의 "Traverse" 는 TemplateMethodPattern 의 예이다. 이 패턴은 StrategyPattern 과 FactoryMethodPattern 를 보충해준다.
Proxy - Structural ¶
Proxy 가 어떻게 object에 대한 access를 control 하는지 공부하라. 이 패턴은 뒤의 AdapterPattern을 직접적으로 이끌어낸다.
Adapter - Structural ¶
AdapterPattern은 DecoratorPattern, ProxyPattern, 그리고 뒤에 이어지는 BridgePattern에 대해 학습자가 알고 있는 지식과 비교되어진다.
Chain of Responsibility - Behavioral ¶
ObserverPattern 과 MediatorPattern 들을 이용한 message의 전달관계를 관찰하면서, ChainOfResponsibilityPattern 의 message handling 과 비교 & 대조할 수 있다.
Facade - Structural ¶
가장 마지막으로 읽을 Pattern 은 FacadePattern 이다. 이 Pattern은 InterpreterPattern 의 예제코드와 그 주제가 비슷하므로, InterpreterPattern 다음에 이어지는 것이 적절하다.