[GoF] UML과 Design Pattern

vvo_ter·2022년 10월 20일
0

디자인패턴

목록 보기
1/2

참조: 책 《Java 언어로 배우는 디자인 패턴 입문 》

UML


Unified Modeling Language의 약자로, 시스템을 시각화하거나 시스템의 사양이나 설계를 문서화하기 위한 표현방법입니다.

디자인 패턴에 등장하는 클래스나 인터페이스의 관계를 UML로 나타낼 수 있습니다.

클래스 다이어그램

클래스나 인스턴스, 인터페이스 등의 정적인 관계를 표현한 것입니다.

  • extends의 화살표는 하위 클래스에서 상위 클래스로 삼각형과 실선으로 나타냅니다.

  • implement의 화살표는 구현 클래스에서 인터페이스로 삼각형과 점선으로 나타냅니다.

  • 인스턴스를 갖고 있다면 개수에 상관 없이 그 관계는 aggregation(집약) 입니다. 인스턴스를 가진 클래스에서 인스턴스의 클래스로 마름모와 실선으로 나타냅니다.

엑세스 제어

UML에서 엑세스 제어를 표현하고 싶은 경우, 메소드나 필드의 이름 앞에 기호를 붙입니다.

  • +가 붙어있는 경우: public 메소드나 필드로 엑세스할 수 있습니다.
  • -가 붙어있는 경우: private 메소드나 필드로 클래스 외부로부터 엑세스할 수 있습니다.
  • #이 붙어있는 경우: protect인 메소드나 필드로 엑세스할 수 있는 것은 동일한 클래스, 하위 클래스 또는 동일한 패키지 내의 클래스 뿐입니다.
  • ~가 붙어있는 경우: 동일한 패키지 내에서만 엑세스할 수 있는 메소드나 필드입니다.

시퀀스 다이어그램

시간에 따라 변하는 동적인 관계를 표현한 것입니다.

  • 인스턴스는 각각 다이어그램의 위쪽에 있는 직사각형 안에 위치합니다. 콜론 뒤에 클래스 명을 표기하고 밑줄이 그어져있습니다.
  • 각각의 인스턴스에서 아래 방향으로 뻗어있는 점선은 라이프 라인(생존선)입니다.
  • 앞이 검은 화살표이 실선은 메소드의 호출을 나타냅니다.
  • 점선의 화살표는 메소드에서의 반환을 표시합니다.

Design Pattern


소프트웨어를 설계할 때 기존 환경 내에서 반복적으로 일어나는 문제들을 어떻게 풀어나갈 것인가에 대한 일종의 솔루션입니다.

그 중에서도 GoF의 디자인 패턴을 다루고 있습니다. 에리히 감마(Erich Gamma), 리차드 헬름(Richard Helm), 랄프 존슨(Ralph Johnson), 존 블리시디스(John Vissides) 4명의 유명한 개발자들에 의해 고안되었습니다.

GoF 디자인 패턴에서는 객체지향형적 디자인 패턴의 카테고리를 "생성 패턴", "구조 패턴", "행동 패턴" 세가지로 분류하고 있습니다.

생성(Creational) 패턴

객체 생성에 관련된 패턴으로, 객체의 생성과 조합을 캡슐화해 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공합니다.

생성패턴에는 싱글톤(Singleton), 팩토리 메소드(Factory Methods), 추상 팩토리 메소드(Abstract Factory Methods), 빌더(Builder), 프로토타입(Prototype)이 있습니다.

구조 패턴

클래스나 객체를 조합해 더 큰 구조를 만드는 패턴입니다. 예를 들어 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나 객체들을 서로 묶어 새로운 기능을 제공하는 패턴입니다.

구조 패턴에는 어댑터(Adapter), 브리지(Bridge), 컴퍼지트(Composite), 데코레이터(Decorator), 퍼사드(Facade), 플라이웨이트(Flyweight), 프록시(Proxy) 가 있습니다.

행동 패턴

객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴입니다. 한 객체가 혼자 실행할 수 없는 작업을 여러개의 객체로 어떻게 분배하는지, 또 그렇게 하면서도 객체 사이의 결합도를 최소화 하는 것에 중점을 둡니다.

행동 패턴에는 책임 연쇄(Chain of Responsibility),
커맨드(Command), 인터프리터(Interpreter), 이터레이터(Iterator), 미디에이터(Mediator), 메멘토(Memento), 옵저버(Observer), 스테이트(State), 스트레티지(Strategy), 템플릿 메서드(Template Meothods), 비지터(Visitor)가 있습니다.

목표

디자인 패턴의 목표중 하나는 프로그램의 재이용을 가능하게 하는 것입니다.

profile
's Coding Memory

0개의 댓글