728x90
🤔 디자인 패턴이란?
- 효율적인 코드를 만들기 위한 방법론
- 라이브러리나 프레임워크가 도와주지 못하는 부분을 도와주는 것
- 상황에 맞는 올바른 설계를 더 빠르게 적용할 수 있다.
- 각 패턴의 장단점을 통해서 설계를 선택하는데 도움을 얻을 수 있다.
- 설계 패턴에 이름을 붙임으로써 시스템의 문서화, 이해, 유지 보수에 도움을 얻을 수 있다.
😊 디자인 패턴 사용 목적 및 이유
1. 우리 주변에서 자주 반복해서 발생하는 문제와 그 문제를 해결하는 핵심을 기술하여 동일한 일을 두 번 다시 하지 않고 해결할 수 있도록 한다.
2. 구체적인 설명없이 구조화된 패턴에 대한 사전 지식으로 개발자 간의 커뮤니케이션이 원할해질 수 있다.
3. 이미 검증된 구조를 사용하므로 설계 과정의 속도를 높일 수 있다.
🙂 디자인 패턴의 장점
- 개발자 간의 원활한 의사소통
- 여러 디자인 패턴의 특성을 잘 알고 있어 문제 해결 시 어떤 디자인 패턴을 사용하면 좋을지 해결책을 논의할 수 있다.
- 소프트웨어 구조 파악 용이
- 디자인 패턴의 특성을 잘 알고 있기에 어떤 디자인 패턴이 설계할 때 사용되었는지 알면 소프트웨어 전체 구조를 쉽게 파악 가능하다.
- 재사용을 통한 개발 시간 단축
- 이미 만들어 놓은 디자인 패턴을 사용하므로 개발시간을 단축시킬 수 있다.
- 설계 변경 요청에 대한 유연한 대처
- 사용자의 지속적인 추가 요청, 환경 변화 등의 설계 변경 요청에 쉽고 빠르게 대처 가능하다.
🙁 디자인 패턴의 단점
- 객체지향 설계/구현 위주로 사용됨
- 디자인 패턴은 객체지향 설계/구현에 많이 사용되는데, C언어를 주로 사용하는 구조적 설계/구현에서도 사용할 수 있지만 너무 복잡해서 큰 도움이 되지 않는다.
- 초기 투자 비용 부담
- 디자인 패턴을 적용 및 설계하면 디자인 패턴을 사용하지 않은 경우보다 초기에 시간과 노력이 많이 든다.
🧩 디자인 패턴 구조
- 컨텍스트(context)
- 패턴이 적용되는 상황
- 반복적으로 일어날 수 있는 상황이어야만 함
- ex) 객체들의 컬렉션이 주어져 있음
- 반복적으로 일어날 수 있는 상황이어야만 함
- 문제가 발생하는 여러 상황을 기술한다. → 패턴이 적용될 수 있는 상황을 나타낸다.
- 경우에 따라서는 패턴이 유용하지 못한 상황을 나타내기도 한다.
- 패턴이 적용되는 상황
- 문제(problem)
- 컨텍스트 내에서 이뤄야 하는 목표
- 컨텍스트 내의 제약조건도 포함됨
- ex) 컬렉션의 구현을 드러내지 않으면서 그 안에 있는 각 객체를 대상으로 순환 작업을 할 수 있어야 함
- 컨텍스트 내의 제약조건도 포함됨
- 패턴이 적용되어 해결될 필요가 있는 여러 디자인 이슈들을 기술한다.
- 이때 여러 제약 사항과 영향력도 문제 해결을 위해 고려해야 한다.
- 컨텍스트 내에서 이뤄야 하는 목표
- 해결(solution)
- 우리가 찾아내야 하는 것
- 제약조건 속에서 누가 적용해도 목표를 이룰 수 있는 일반적인 디자인
- ex) 반복 작업을 별도의 클래스로 캡슐화함
- 제약조건 속에서 누가 적용해도 목표를 이룰 수 있는 일반적인 디자인
- 문제를 해결하도록 설계를 구성하는 요소들과 그 요소들 사이의 관계, 책임, 협력 관계를 기술한다.
- 해결은 반드시 구체적인 구현 방법이나 언어에 의존적이지 않으며 다양한 상황에 적용할 수 있는 일종의 템플릿이다.
- 우리가 찾아내야 하는 것
문제 : 어떻게 회사에 제시간에 도착할 것인가?
컨텍스트 : 차에 자동차 열쇠를 두고 나왔는데 문이 잠겼다
해결책 : 유리를 깬다. 차에 들어간다. 차를 몰고 출근한다.
https://java-coding.tistory.com/54
728x90
'Study > 디자인패턴' 카테고리의 다른 글
행위 패턴(Behavioral Pattern) (0) | 2022.08.11 |
---|---|
구조 패턴(Structural Pattern) (0) | 2022.08.11 |
생성 패턴(Creational Pattern) (0) | 2022.08.11 |
GoF (Gang of Four) 디자인 패턴 (0) | 2022.08.11 |
댓글