디자인패턴
-
기존 환경내에서 반복적으로 일어나는 문제들을 설명한 후 그 문제들에 대한 해법의 핵심을 설명 , 재사용 할수 있게 하는 패턴
기대효과
-
공통적인 설계자들의 어휘의 수준을 높여준다.
- 논의에 있어서 대화의 많은 영역을 추상화하여 더 간결하게 표현할 수 있어서 , 더욱 지적 대화가 가능하다.
- 적은 단어로 많은 내용을 내포하여 의도를 제대로 전달 할 수 있다.
- 디자인패턴을 인용한 대화 - 객체의 이동하는 동작에 대해서는 스트래티지패턴이 적절하겠네요.
- 객체의 이동을 표현하기 위해서는 **이동하는 동작을 정의한 인터페이스를 정의하고 , 해당 인터페이스를 구체화한 클래스를 추상화되어있는 인터페이스에 합성시키고 인터페이스에 정의된 메소드외에는 은닉하고, 동적으로 수정할 수 있게 프로그래밍하면 ** 적잘하겠네요.
-
시스템의 문서화
- 시스템을 문서화함에 있어서 , 패턴을 명시해두면 , 패턴을 아는 설계자는 코드를 일일히 분석하는 수고를 덜고 , 쉽게 이해할 수 있다.
-
학습의 보조 도구
- 주어진 문제에 대한 일반적인 해결책과 , 상황 , 그리고 왜? 사용해야하는 지 를 문서화 해둠으로 많은 공부를 할 수있다.
-
기존방법에 대한 보조 역할
- 객체 , 상속 ,다형성, 캡슐화 , 추상화 - 이 와 같은 소프트웨어를 설계할 때 고려해야할 여러 기법을 올바르게 사용하는 좋은 표본이다.
-
리팩토링에 용이
- 소프트웨어 설계는 일반적으로 **프로토타이핑 , 확장 , 통합 ** 단계로 나뉜다.
- 프로토타이핑 - 초기 요구사항을 만족 , 빠른 시제품화 —> 체계적 구현이 아니다, 화이트박스 재사용 ( 상속 )의 형태
- 확장. 통합 - 소프트웨어가 성숙기에 들어가면서 , 지속적인 추가 요구사항이 생기고 그에따른 기존코드의 수정이 불가피하다. 추가적인 요구사항을 계속적으로 받아들이기 위해서는, 블랙박스 재사용(객체합성,인터페이스) 의 형태로 재구성하는 것이 좋다.
- 초기 요구사항에 맞게 설계를 하는데에 있어서는 리팩토링을 염두한 설계가 어렵다 .
- 기존 디자인 패턴들은 계속적인 리팩토링 결과물에서 파생된 패턴이므로 , 초기에 디자인패턴을 적용하면 확장에 대한 리팩토링이 비교적 용이하다.
- 소프트웨어 설계는 일반적으로 **프로토타이핑 , 확장 , 통합 ** 단계로 나뉜다.