Design Pattern

Design Pattern ) 디자인패턴이란?

붱이🦉 2019. 4. 28. 15:42

디자인패턴

  • 기존 환경내에서 반복적으로 일어나는 문제들을 설명한 후 그 문제들에 대한 해법의 핵심을 설명 , 재사용 할수 있게 하는 패턴


기대효과

  • 공통적인 설계자들의 어휘의 수준을 높여준다.

    • 논의에 있어서 대화의 많은 영역을 추상화하여 더 간결하게 표현할 수 있어서 , 더욱 지적 대화가 가능하다.
    • 적은 단어로 많은 내용을 내포하여 의도를 제대로 전달 할 수 있다.
      • 디자인패턴을 인용한 대화 - 객체의 이동하는 동작에 대해서는 스트래티지패턴이 적절하겠네요.
      • 객체의 이동을 표현하기 위해서는 이동하는 동작을 정의한 인터페이스를 정의하고 , 해당 인터페이스를 구체화한 클래스를 추상화되어있는 인터페이스에 합성시키고 인터페이스에 정의된 메소드외에는 은닉하고, 동적으로 수정할 수 있게 프로그래밍하면 적절하겠네요.
  • 시스템의 문서화

    • 시스템을 문서화함에 있어서 , 패턴을 명시해두면 , 패턴을 아는 설계자는 코드를 일일히 분석하는 수고를 덜고 , 쉽게 이해할 수 있다.
  • 학습의 보조 도구

    • 주어진 문제에 대한 일반적인 해결책과 , 상황 , 그리고 왜? 사용해야하는 지 를 문서화 해둠으로 많은 공부를 할 수있다.
  • 기존방법에 대한 보조 역할

    • 객체 , 상속 ,다형성, 캡슐화 , 추상화 - 이 와 같은 소프트웨어를 설계할 때 고려해야할 여러 기법을 올바르게 사용하는 좋은 표본이다.
  • 리팩토링에 용이

    • 소프트웨어 설계는 일반적으로 *프로토타이핑 , 확장 , 통합 * 단계로 나뉜다.
      • 프로토타이핑 - 초기 요구사항을 만족 , 빠른 시제품화 —> 체계적 구현이 아니다, 화이트박스 재사용 ( 상속 )의 형태
      • 확장. 통합 - 소프트웨어가 성숙기에 들어가면서 , 지속적인 추가 요구사항이 생기고 그에따른 기존코드의 수정이 불가피하다. 추가적인 요구사항을 계속적으로 받아들이기 위해서는, 블랙박스 재사용(객체합성,인터페이스) 의 형태로 재구성하는 것이 좋다.
    • 초기 요구사항에 맞게 설계를 하는데에 있어서는 리팩토링을 염두한 설계가 어렵다 .
    • 기존 디자인 패턴들은 계속적인 리팩토링 결과물에서 파생된 패턴이므로 , 초기에 디자인패턴을 적용하면 확장에 대한 리팩토링이 비교적 용이하다.