원문 : http://www.industriallogic.com/papers/learning.html 여기서는 원문중 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은 계속 개선해 나갈 것이다. 그리고 당신이 제안하는 개선책 또한 환영한다. == DesignPatterns Navigation == === Factory Method - Creational === FactoryMethodPattern 로 시작하라. 이 패턴은 다른 패턴들에 전반적으로 사용된다. === Strategy - Behavioral === StrategyPattern 또한 책 전반에 걸쳐 빈번하게 이용된다. 이 패턴에 대해 일찍 알아둠으로써, 다른 패턴을 이해하는데 도움을 줄 것이다. === Decorator - Structural === "skin" vs "guts" 에 대한 토론은 StrategyPattern 와 DecoratorPattern 를 구별하는 좋은 예가 될 것이다. === Composite - Structural === CompositePattern은 여러부분에서 나타나며, IteratorPattern, ChainOfResponsibilityPattern, InterpreterPattern, VisitorPattern 에서 종종 쓰인다. === Iterator - Behavioral === IteratorPattern 을 공부함으로, CompositePattern 에 대한 이해도를 높여줄 것이다. === Template Method - Behavioral === 앞에서의 IteratorPattern 의 예제코드에서의 "Traverse" 는 TemplateMethodPattern 의 예이다. 이 패턴은 StrategyPattern 과 FactoryMethodPattern 를 보충해준다. === Abstract Factory - Creational === AbstractFactoryPattern은 두번째로 쉬운 creational Pattern이다. 이 패턴은 또한 FactoryMethodPattern를 보강하는데 도움을 준다. === Builder - Creational === AbstractFactoryPattern 과 BuilderPattern 을 비교해보라. === Singleton - Creational === SingletonPattern은 종종 AbstractFactoryPattern 을 만드는데 이용된다. (Related Patterns 참조) === Proxy - Structural === Proxy 가 어떻게 object에 대한 access를 control 하는지 공부하라. 이 패턴은 뒤의 AdapterPattern을 직접적으로 이끌어낸다. === Adapter - Structural === AdapterPattern은 DecoratorPattern, ProxyPattern, 그리고 뒤에 이어지는 BridgePattern에 대해 학습자가 알고 있는 지식과 비교되어진다. === Bridge - Structural === 최종적으로, 학습자는 어떻게 BridgePattern이 AdapterPattern 과 ProxyPattern 과 다른지 공부하게 된다. === Mediator - Behavioral === ObserverPattern 과 Model-View-Controller (MVC) Design 을 이해하기 위한 준비단계로 MediatorPattern을 공부한다. === Observer - Behavioral === 고전적인 MVC Design 을 구현하기 위해 어떻게 ObserverPattern에 의해 MediatorPattern 이 이용되는지 발견하라. === Chain of Responsibility - Behavioral === ObserverPattern 과 MediatorPattern 들을 이용한 message의 전달관계를 관찰하면서, ChainOfResponsibilityPattern 의 message handling 과 비교 & 대조할 수 있다. === Memento - Behavioral === 이 Pattern은 다음의 CommandPattern 에서 undo 와 redo의 구현부분과 이어진다. === Command - Behavioral === CommandPattern 은 앞의 MediatorPattern 과 관련된, 여러가지 방면에서 이용된다. === Prototype - Creational === 아마도 가장 복잡한 creational pattern 일 것이다. PrototypePattern 은 종종 CommandPattern 과 같이 이용된다. === State - Behavioral === object의 행동 변화에 대한 또 다른 방법으로 StatePattern 을 공부할 수 있을 것이다. === Visitor - Behavioral === VisitorPattern 은 종종 CompositePattern 과 IteratorPattern 들과 조합되어진다. === Flyweight - Structural === 가장 복잡한 Pattern중 하나이다. 이 Pattern의 이용 예제는 다음 패턴인 InterpreterPattern 에서 서술된다. === Interpreter - Behavioral === InterpreterPattern 은 복잡하다. 이 Pattern은 FlyweightPattern 와 VisitorPattern 과 관계있으며, 이해를 돕는다. === Facade - Structural === 가장 마지막으로 읽을 Pattern 은 FacadePattern 이다. 이 Pattern은 InterpreterPattern 의 예제코드와 그 주제가 비슷하므로, InterpreterPattern 다음에 이어지는 것이 적절하다.