레이블이 Design Patterns인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Design Patterns인 게시물을 표시합니다. 모든 게시물 표시

디자인 패턴 카탈로그


  1. 디자인 패턴 카탈로그란?
    디자인 패턴에 대한 설명을 자세하게 설명한 것으로 패턴의 용도, 만들어진 배경, 적용될 수 있는 범위, 해결책, 적용한 결과(장점과 단점) 등을 자세하게 기술한 것으로 정의된 다자인 패턴에 대해서 바로 알아볼 수 있으며, 어느 상황에 적용해야 하는지를 알려 준다. 
  2. 디자인 패턴 카탈로그 구성 요소
    • 디자인 패턴 이름 (Name)
      패턴에서 가장 중요한 것으로 다른 개발자들과 정보를 공유하기 위해서 필요하다.
    • 용도 (Intent)
      패턴의 역할이 간단히 기술되며, 패턴을 정의할 때 썼던 내용이 들어간다.
    • 동기 (Motivation)
      문제를 기술하고 주어진 해결책이 어떻게 문제를 해결하는지 구체적인 시나리오가 주어진다.
    • 적용 대상 (Applicability)
      패턴이 적용할 수 있는 상황이 기술된다.
    • 구조 (Structure)
      패턴에서 쓰이는 클래스들의 관계를 보여주는 다이어그램이 수록된다.
    • 구성 요소 (Participant)
      디자인에 포함되는 클래스와 객체들에 대한 설명이 들어 있고, 패턴 내에서 클래스/객체가 맡는 임무와 역할을 설명한다.
    • 협동 (Collaborations)
      구성요소(Participant)들이 패턴 내에서 어떤 식으로 서로 도움을 주는지가 설명된다.
    • 결과 (Consequences)
      패턴을 사용했을 때의 효과인 장점과 단점이 수록된다.
    • 구현 (Implementation)
      패턴을 구현할 때 필요한 기술 및 주의사항에 대한 설명이 들어있다.
    • 샘플 코드 (Sample Code)
      구현하는 데 도움이 될 만한 코드를 제공한다.
    • 사용 예 (Known uses)
      실제 시스템에서 패턴을 사용하는 예에 대한 설명이 들어있다.
    • 관련 패턴 (Related Patterns)
      이 패턴과 다른 패턴 사이의 관계에 대한 설명이 나와있다.
  3. 디자인 패턴 카탈로그를 통해서 패턴이 어느 곳에 사용 되어야 적절한지 파악하기 쉽다.

디자인 원칙


  1. 애플리케이션에서 달라 지는 부분을 찾아내고, 달라 지지 않는 부분으로부터 분리 시킨다.
    -> 달리지는 부분을 찾아서 나머지 달라 지지 않는 부분에 영향을 주지 않도록 캡슐화 한다.
    -> 달라 지는 부분을 캡슐화해서 분리하면, 코드를 변경하는 과정에서 의도하지 않은 일이 일어나는 것을 줄이고, 시스템의 유연성은 향상 시킬 수 있다.
  2. 구현이 아닌 인터페이스에 맞춰서 프로그래밍 한다.
    -> 변경되지 않는 부분에서 인터페이스로 구현된 부분에 대해서는 관심을 가지지 않아도된다.
  3. 상속 보다는 구성을 활용한다.
    ->A는 B이다. 보다는 A에는 B가 있다가 나을 수 있다.
    ->구성(Composition)을 이용하여 시스템을 만들면 유연성을 크게 향상 시킬 수 있다.(유연성은 변경된 부분을 캡슐화하여 실행 시에 행동을 바꿀 수 있도록 한다.)