0. 디자인패턴 강의를 듣게 된 이유
우선 Java를 메인 언어로 공부하는 나의 입장에서 Java로 수업을 진행한다는 점에서 안 들을 수 없었다.
그리고 Java로 프로젝트를 진행했을 때 클래스들을 그저 주제별로 사용했다는 점, Interface나 abstract, 그리고 implement나 extend의 존재만 알고 전혀 사용하지 않았다는 점에서 이들을 활용하고 유지보수적으로 어떻게 클래스들을 설계하는지 미래지향적으로 보았을 때 프로젝트의 퀄리티를 높이는데 필요하다고 생각되어 수강을 하게 되었다.
1. Design Pattern에서 배우는 것들
UML : 설계 기술 방식
Object Oriented Paradigm : Class, Object, 상속, 인터페이스 등
Strategy Pattern
Observer Pattern
Decorator Pattern
Factory Pattern
Singleton Pattern
Command Pattern
Adapter/Facade Pattern
Template Pattern
Iterator Pattern
Composite Pattern
State Pattern
Proxy Pattern
2. Unified Process (UP)
OO 시스템을 만들기 위한, 반복적인 방식을 사용하는 SW 개발 process
Agile 개발 방법론으로부터 (<-> Waterfall)
OO SW 개발을 위한 준 산업계 표준 (de-facto industry standard)
https://en.wikipedia.org/wiki/Unified_Process
Unified Process - Wikipedia
From Wikipedia, the free encyclopedia Object oriented software development process framework Profile of a typical project showing the relative sizes of the four phases of the Unified Process. The unified software development process or unified process is a
en.wikipedia.org
3. 디자인패턴을 사용하는 이유
"Designing object-oriented software is hard, Designing reusable object-oriented software is even harder"
- Erich Gamma
Experienced designers reuse solutions which were proved to work in the past.
Well-structured object-oriented systems have recurring patterns of classes and objects.
Knowledge of patterns allow a designer to be more productive and the resulting designs to be more flexible and reusable.
Facilitate commuication among developers by providing a common language.
Someone has already solved your problems.
강의자료에서 강조하는 부분이다. 주로 재사용성과 생산성에 초점을 두는 것으로 보인다.
4. 디자인패턴 정의 3가지 부분
Design Pattern : "A solution to a problem in a context."
- Context : the situation in which the pattern applies. This should be a recurring situation
- Problem : the goal you are trying to achieve in this context, but it also refers to any constraints that occur in the context
- Solution : a general design that anyone can apply which resolves the goal and the set of constraints
