[Design Pattern] 디자인 패턴이란?

Choi Sang Rok·2022년 2월 24일
0
post-thumbnail
post-custom-banner

소프트웨어 개발은, 늘 그랬듯이 최소한의 비용으로 최대의 가치를 창출하기 위한 목적을 가져 왔다.
때문에 [재사용성], [유지보수], [효율적], [생산적] 이라는 말은 개발에서 뗄레야 뗄 수 없는 단어가 되었다. 설계할 때 지금 당장 갖고 있는 문제를 해결해야 할 뿐 아니라, 나중에 생길 문제나 추가된 요구 사항도 수용할 수 있도록 해야 하고, 이전의 코드를 재사용하여 생산성을 높이는 일도 해야하고.... 개발자들은 이러한 문제들에 대해 늘 어떻게 하면 해결할 수 있을지 고민해 왔다.


디자인 패턴


  • 기존 환경 내에서 반복적으로 일어나는 문제들을 어떻게 풀어나갈 것 인가에 대한 일종의 솔루션

  • 모듈의 세분화된 역할이나 모듈들 간의 인터페이스 구현 방식을 설계할 때 참조할 수 있는 전형적인 해결 방식

    어떠한 클래스, 라이브러리를 지칭하는 것이 아닌 전체적인 구조를 의미한다. 디자인 패턴은 설계자로 하여금, 재사용이 가능한 설계는 선택하고 재사용을 방해하는 설계는 배제하도록 도와준다. 또한 패턴을 쓰면 이미 만든 시스템의 유지보수문서화도 개선할 수 있고, 클래스의 명세도 정확하게 할 수 있으며, 객체 간의 상호작용 또는 설계 의도까지 명확하게 정의할 수 있다.


GoF(Gang of Fout) 디자인 패턴


1995년, GoF(Gang of Four)라고 불리는 Erich Gamma(에리히 감마), Richard Helm(리차드 헬름), Ralph Johnson(랄프 존슨), John Vissides(존 블리시디스)가 처음으로 디자인 패턴을 구체화 하였다.
생성 패턴, 구조 패턴, 행위 패턴 세가지로 분류되어 소프트웨어 공학에서 가장 많이 사용되는 이 패턴을 GoF 디자인 패턴이라고 한다.

1. 생성 패턴(Creational Pattern)

생성 패턴은 객체의 생성과 관련된 패턴이다. 객체의 인스턴스 과정을 추상화하는 방법으로 객체의 생성과 참조 과정을 캡슐화하여 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 받지 않도록 하여 프로그램에 유연성을 더해준다. 생성 클래스 패턴객체를 생성하는 일부를 서브클래스가 담당하도록 하며, 생성 객체 패턴은 객체 생성을 다른 객체에게 위임한다.

2. 구조 패턴(Structural Pattern)

구조 패턴은 클래스나 객체들을 조합해 더 큰 구조로 만들 수 있게 해주는 패턴이다. 구조 클래스 패턴은 상속을 통해 클래스나 인터페이스를 합성하고, 구조 객체 패턴은 객체를 합성하는 방법을 정의한다.

3. 행동 패턴(Behavioral Pattern)

행위 패턴은 클래스나 객체들이 서로 상호작용 하는 방법이나 어떤 태스크, 어떤 알고리즘을 어떤 객체에 할당하는 것이 좋을지를 정의하는 패턴이다. 즉, 객체나 클래스의 교류 방법에 대해 정의하는 것이다. 행위 패턴은 하나의 객체로 수행할 수 없는 작업을 여러 객체로 분배하면서 그들 간의 결합도를 최소화 할 수 있도록 도와준다. 행위 클래스 패턴 은 상속을 통해 알고리즘과 제어 흐름을 기술하고, 행위 객체 패턴은 하나의 작업을 수행하기 위해 객체 집합이 어떻게 협력하는지를 기술한다.



참고 블로그
https://gmlwjd9405.github.io/2018/07/06/design-pattern.html
https://readystory.tistory.com/114
https://4z7l.github.io/2020/12/25/design_pattern_GoF.html

profile
android_developer
post-custom-banner

1개의 댓글

comment-user-thumbnail
2022년 2월 24일

제 행동패턴은 방문자 인가요?

답글 달기