"소프트웨어를 설계할때 특정 부분에서 자주 발생하는 고질적인 문제들이 또 발생했을때 재사용할 수 있도록 하는 훌륭한 해결책"
"개발자들이 협업을 할 때, 의사소통을 효율적으로 할 수 있도록 도와주는 것"
"효율적으로 코드를 개선할 수 있다"
"바퀴를 다시 발명하지마라"
각기 다른 소프트웨어 모듈이나 기능을 가진 다양한 프로그램 시스템들을 개발할때에도 서로간의 공통되는 설계 문제가 존재하고, 이를 해결하는 방법들의 공통점을 패턴
이라고 한다.
말 그대로 디자인 패턴이란, 개발자들끼리 협업을 잘할 수 있도록 코드들의 패턴을 짜면서 코드의 질, 효율성을 높히는 것이라 부를 수 있다는 것을 알 수 있다.
- 개발자 간의 원할한 의사소통
- 소프트웨어 구조 파악 용이
- 재사용을 통한 개발 시간 단축
- 설계 변경 요청에 대한 유연한 대처
- 야근없이, 빠른 퇴근 가능
- 불필요한 리소스 낭비 방지
- 객체지향 설계 / 구현 위주로 사용된다.
- 초기 투자 비용 부담
-
Creation Pattern
- 객체의 생성에 관련된 패턴. 객체의 생성 로직을 숨김으로써 유연성을 향상시킨다.
-
Structural Pattern
- 클래스와 객체의 구성에 관련된 패턴
-
Behavioral Pattern
- 객체와 객체 간의 통신에 관련된 패턴
GoF 디자인 패턴의 분류
이름 | 설명 |
---|---|
생성 패턴 | 객체 생성에 관련된 패턴 객체의 생성과 조합을 캡슐화하여 특정 객체가 생성, 변경되어도 프로그램 구조에 영향을 크게 받지 않도록 유연성을 제공한다. |
구조 패턴 | 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴 예를 들어 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공하거나, 객체들을 서로 묶어 새로운 기능을 제공하는 패턴이다. |
행위 패턴 | 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴 한 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하는지, 또 그렇게 하면서도 객체 사이의 결합도 최소화하는 것에 중점을 둔다. |
GoF 디자인 패턴 종류
- 생성 패턴
- 추상 팩토리 , 빌더 , 팩토리 메서드 , 프로토타입 , 싱글턴
- 구조 패턴
- 어댑더 , 브리지 , 컴버지트 , 데커레이터 , 퍼사드 , 플라이웨이트 , 프록시
- 행위 패턴
- 책임 연쇄 , 커맨드 , 인터프리터 , 이터레이터 , 미디에이터 , 메멘토 , 옵저버 ,스테이트 , 스트레티지 , 템플릿 메서드 , 비지터