꾸물꾸물 졔의 개발공부
[Design Pattern] 디자인 패턴이란 ? 본문
재사용할 수 있는 객체지향 소프트웨어를 만드는 것은 결코 쉽지 않다.
설계 시에는, 지금 당장 갖고 있는 문제를 해결할 수 있어야 하겠지만, 이후에 같은 문제가 발생하거나 추가된 문제나 요구사항도 수용할 수 있도록 일반적이고 포괄적이어야 한다.
개발을 꾸준히 하다보면, 이전에 사용했던 코드나 방법을 거의 똑같이 사용하기도, 변형해서 유사하게 사용하기도, 또는 또 다른 방법을 찾아서 구현하기도 한다.
디자인 패턴은, 설계자로 하여금 재사용이 가능한 설계는 선택하고, 재사용을 방해하는 설계는 배제하도록 도와준다,
또한 이미 만든 시스템의 유지보수나 문서화, 명세 등을 정확하게 개선할 수도 있다.
즉, 디자인패턴은 설계자들이 올바른 설계를 보다 빠르게 할 수 있도록 도와준다.
디자인 패턴이란 ?
- 소프트웨어 설계 시, 특정 맥락에서 자주 발생하는 고질적인 문제들이 또 발생 할 때 재사용할 수 있는 해결책
- 소스나 코드로 바로 전환가능한 완성된 디자인은 아니며, 상황에 맞게 사용될 수 있는 문제 해결을 위한 템플릿
- 패턴 ?
- 서로 다른 모듈이나 기능을 개발할 때에도 서로간의 공통되는 설계문제가 존재하며, 해결하는 방법간에도 공통점이 있다. 이러한 유사점을 `패턴` 이라 한다.
- 패턴은 공통의 언어를 만들어주고, 팀원간의 의사소통을 원활하게 해준다 .
디자인 패턴 구조 ?
- 콘텍스트 ( context )
- 문제가 발생하는 여러 상황들을 기술한다. 즉, 패턴이 적용될 수 있는 상황
- 경우에 따라서는 패턴이 유용하지 못한 상황을 나타내기도 함
- 문제 ( problem )
- 패턴이 적용되어 해결될 필요가 있는 여러 이슈들
- 여러 제약 사항과 영향력도 문제 해결을 위해 고려해야 한다.
- 해결 ( solution )
- 문제를 해결하기 위해 설계를 구성하는 요소들과, 그 요소간의 관계
- 구체적은 구현방법이나 언어에 의존적이지 않고, 다양한 상황에 유연성 적용할 수 있는 템플릿
디자인 패턴의 종류
- 생성 패턴 ( Creational Pattern )
- `객체 인스턴스 생성`과 관련된 패턴
- 이들 클래스의 인스턴스 들이 어떻게 만들어지고, 어떻게 서로 맞붙는지에 대한 부분을 완전히 가린다.
즉, 객체의 생성과 조합을 캡슐화하여, 특정 객체가 생성되거나 변경되더라도 프로그램의 구조에 영향을 크게 받지 않도록 유연성을 제공한다. .
- 구조 패턴 ( Structural Pattern )
- 클래스나 객체를 조합하여, 더 큰 구조를 만들어 내는 패턴
ex ) 서로 다른 인터페이스를 지닌 2개의 객체를 묶어 단일 인터페이스를 제공 / 객체들을 묶어 새로운 기능 제공
- 클래스나 객체를 조합하여, 더 큰 구조를 만들어 내는 패턴
- 행동 패턴 ( Behavioral Pattern )
- 클래스와 객체들이 상호작용하는 방법과 역할을 분담하는 방법을 다루는 패턴
- 한 객체가 혼자 수행할 수 없는 작업을 여러개의 객체로 어떻게 분배할지, 동시에 객체간 결합도를 최소화
'CS > Design Pattern' 카테고리의 다른 글
1. 싱글톤 패턴 (Singleton Pattern) (0) | 2023.09.06 |
---|