안드레이 2024. 3. 7. 14:42

▼디자인 패턴

자주 사용하는 실제 형태를 정형화하여 유형별로 설계 템플릿을 만들어 두고 소프트웨어 개발 중 나타나는 과제를 해결하기 위한 방법 중 한가지이다. 다양한 응용 소프트웨어 시스템들을 개발할 때 서로 간에 공통되는 설계 문제가 존재하는데, 각 해결책 사이에도 공통점이 있으며 이러한 유사점을 패턴이라고 한다. 이러한 패턴은 개발자 간의 원활한 의사소통, 소프트웨어 구조파악에 용이하며, 유지보수성, 운용성 등 소프트웨어 품질 향상에 도움을 준다. 객체지향 프로그래밍 설계 시 유사한 상뢍에서 구조적인 문제를 해결할 수 있도록 방안을 제공해 주며, Gof(Gang of Four)분류가 가장 많이 사용된다.

 

★디자인 패턴을 사용할 떄의 장·단점

 

장점

- 개발자 간의   원활한 의사소통 지원.

- 소프트웨어의 구조 파악 용이

-- 설계 변경 요청에 유연한 대처 가능

- 재이용을 통한 개발 시간 단축

- 객체지향 설계 및 구현의 생상성을 높이는데 적합

 

단점

- 객체지향 설계/구현 위주로 사용된다.

- 초기 투자 비용 부담이 크다.

 

▼디자인 패턴의 구성요소

★필수요소

패턴의 이름: 패턴을 부를 때 사용하는 이름과 패턴의 유형

문제 및  배경: 패턴이 사용되는 분야 또는 배경, 해결되는 문제를 의미

해법: 패턴을 이루는 요소들, 관계, 협동 과정

결과: 패턴을 사용하면 얻게 되는 이점

 

★추가요소

알려진 사례 : 적용사례

샘플 코트 : 패턴이 적용된 원시코드

원리, 정당선, 근거, 출처

 

★Gof(Gang of Four) 디자인 패턴

애릭 감마, 리처드 헬름, 랄프 존슨, 존 브리시데스가 제안한 디자인  패턴으로 객체지향 설계 단계 중 재사용에 대한  유용한 설계를 디자인 패턴화 하였다. 생성 패턴, 구조 패턴, 행위 패턴드로 분류된다.

 

★생성배턴

객체를 생성하는 것과 관련된 패턴이며 객체의 생성과 변경이 전체 시스템에 미치는 영향을 쵯소화 하도록 만들어 주어 유연성을  높일 수 있고 코드를 유지하기가 쉬운 편이다.객체의 생성과 참조 과정을 추상화 함으로서 시스템을 개발할 떄 부담을 줄여준다.

종류 설명
Factory Method 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고 하위 클래스에서 인스턴스를  생성하도록 하는 방식이다.
Virtual-Constructor 패턴이라고도 한다.
Singleton 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 한다.
생성된  객체를 어디에서든지 참조할 수 있도록 하는 패턴이다.
Prototype prototype을 먼저 생성하고 인스턴스를 복제하여 사용하는 구조이다. 일반적인 방법으로 객체를 생성하며, 비용이 많이 소모되는 경우 주로 사용된다.
Builder 작게 분리된 인스턴스를 조립하듯 조합하여 객체를 생성한다.
Abstraction Factory 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴이다. 관련된 서브 클래스를 그룹지어 한 번에 교체할 수 있다.

 

★구조 패턴

클래스나 객체를 조합해 더 큰 구조를 만드는  패턴이다. 복잡한 형태의 구조를 갖는 시스템을 개발하기 쉽게 만들어주는 패턴이다. 새로운 기능을 가진 복합 객체를 효과적으로 작성할 수 있다. 

구성: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy

 

adapter 패턴: 한 클래스의 인터페이스를 클라이언트에서 사용하고자하는 다른 인터페이스로 변환한다.어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다.

bridge 패턴: 기능 클래스 계층과 구현 클래스 계층을 연결하고, 구현부에서 추상 계층을 분리하여 각자 독립적으로 변형 할 수 있도록 해주는 패턴이다.

 

★행위 패턴

반복적으로 사용되는 객체들의 상호작용을 패턴화 한 것으로, 클래스나 객체들이 상호작용하는 방법과  책임을 분산하는 방법을 정의한다. 메세지 교환과   관련된 것으로 객체 간의 행위나 알고리즘 등과 관련된  패턴을 말한다.

 

★디자친 패턴 vs 아키텍쳐 패턴

아키텍처 패턴: 시스템 전체 구조를 설계하기 위한  참조모델. 기본적으로 상위 설계에 이용된다.

디자인 패턴: 서브 시스템 내 컴포넌트와 그들 간의 관계를 구성하기 위한 참조 모델