[디자인패턴] 디자인패턴이란? - 생성패턴, 구조패턴, 행위패턴

koline·2023년 8월 10일
0

디자인패턴

목록 보기
1/24

디자인 패턴 (Gang of Four - GoF)


디자인 패턴은 소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴으로, 객체나 클래스의 생성과 조합, 객체/클래스 사이의 작업과 책임 분배의 방식을 다룬다.

디자인 패턴을 참고하여 개발할 경우 개발의 효율성과 유지보수성, 운용성이 높아지며, 프로그램의 최적화에 도움이 된다



종류


"생구행"으로 외우면 편하다.

성패턴 (Creational Pattern)
조패턴 (Structural Pattern)
위패턴 (Behavioral Pattern)


생성패턴

객체생성과 관련된 패턴

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

생성패턴은 인스턴스를 만드는 절차를 추상화하는 패턴이다. 생성패턴에 속하는 패턴들은 객체를 생성, 합성하는 방법이나 객체의 표현방법을 시스템과 분리해준다.

생성패턴은 시스템이 상속보다 복합방법을 사용하는 방향으로 진화하면서 더욱 중요해지고 있다.

생성패턴에는 두 가지의 이슈가 존재한다.

  1. 생성 패턴은 시스템이 어떤 Concrete Class를 사용하는지에 대한 정보를 캡슐화한다.
  2. 생성 패턴은 이들 클래스의 인스턴스들이 어떻게 만들고 어떻게 결합하는지에 대한 부분을 완전히 가려준다.

즉, 생성패턴을 사용하면 무엇이 생성되고, 누가 이것을 생성했으며, 이것이 어떻게 생성되는지, 언제 생성할 것인지 결정하는데 유연성을 확보할 수 있다.


구조패턴

클래스나 객체의 조합으로 더 큰 구조를 만드는 패턴

예를 들어 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나 객체들을 서로 묶어 새로운 기능을 제공하는 패턴이다.

이 패턴을 사용하면 서로 독립적으로 개발한 클래스 라이브러리를 마치 하나인 양 사용할 수 있다. 또, 여러 인터페이스를 합성(Composite)하여 서로 다른 인터페이스들의 통일된 추상을 제공한다.

구조 패턴의 중요한 포인트는 인터페이스나 구현을 복합하는 것이 아니라 객체를 합성하는 방법을 제공한다는 것이다. 이는 컴파일 단계에서가 아닌 런타임 단계에서 복합 방법이나 대상을 변경할 수 있다는 점에서 유연성을 갖게 한다.


행위패턴

객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴

한 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하는지, 또 그렇게 하면서도 객체 사이의 결합도를 최소화하는 것에 중점을 둔다.

profile
개발공부를해보자

1개의 댓글

comment-user-thumbnail
2023년 8월 10일

좋은 글이네요. 공유해주셔서 감사합니다.

답글 달기