본문 바로가기
컴퓨터 | IT

디자인 패턴(Design Pattern)

by 호기심심풀이 2021. 2. 21.
반응형

디자인 패턴(Design Pattern)

 

디자인 패턴 정의

어떤 분야에서 반족적으로 나타나는 문제점들에 대해 전문가들의 경험을 정리하여 해결방안을 제시한 패턴.

 

디자인 패턴을 구성하는 요소

문제 및 배경

사례

샘플코드

 

디자인 패턴의 종류

디자인 패턴은 크게 생성 패턴(Creational Patterns), 구조 패턴(Structural Patterns), 행동 또는 행위 패턴(Behavioral Patterns)로 나뉘고, 그 안에 여러가지의 패턴이 존재한다.

¤ 생성 패턴(Creational Patterns)

추상 팩토리 패턴(Abstract Factory) : 동일한 주제의 다른 팩토리를 묶어 준다.

빌더 패턴(Builder) : 생성(construction)과 표기(representation)를 분리해 복잡한 객체를 생성한다.

팩토리 메서드 패턴(Factory Method) : 생성할 객체의 클래스를 국한하지 않고 객체를 생성한다.

싱글턴 패턴(Singleton) : 한 클래스에 한 객체만 존재하도록 제한한다.

¤ 구조 패턴(Structural Patterns)

어댑터 패턴(Adapter) : 인터페이스가 호환되지 않는 클래스들을 함께 이용할 수 있도록, 타 클래스의 인터페이스를 기존 인터페이스에 덧씌운다.

브리지 패턴(Bridge) : 추상화와 구현을 분리해 둘을 각각 따로 발전시킬 수 있다.

합성 패턴(Composite) : 0개, 1개 혹은 그 이상의 객체를 묶어 하나의 객체로 이용할 수 있다.

데코레이션 패턴(Decorator) : 기존 객체의 매서드에 새로운 행동을 추가하거나 오버라이드 할 수 있다.

파사드 패턴(Facade) : 많은 분량의 코드에 접근할 수 있는 단순한 인터페이스를 제공한다.

플라웨이트 패턴(Flyweight) : 다수의 유사한 객체를 생성·조작하는 비용을 절감할 수 있다.

프록시 패턴(Proxy) : 접근 조절, 비용 절감, 복잡도 감소를 위해 접근이 힘든 객체에 대한 대역을 제공한다.

¤ 행동 패턴(Behavioral Patterns)

책임연쇄 패턴(Chain of responsibility) : 책임들이 연결되어 있어 내가 책임을 못 질 것 같으면 다음 책임자에게 자동으로 넘어가는 구조

커맨드 패턴(Command) : 위의 명령어를 각각 구현하는 것보다는 위 그림처럼 하나의 추상 클래스에 메서드를 하나 만들고 각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행하는 것

해석자 패턴(Interpreter) : 문법 규칙을 클래스화한 구조를 갖는SQL 언어나 통신 프로토콜 같은 것을 개발할 때 사용

반복자 패턴(Itetator) : 반복이 필요한 자료구조를 모두 동일한 인터페이스를 통해 접근할 수 있도록 메서드를 이용해 자료구조를 활용할 수 있도록 해준다.

옵저버 패턴(Observer) : 어떤 클래스에 변화가 일어났을 때, 이를 감지하여 다른 클래스에 통보해주는 것

전략 패턴(Strategy) : 알고리즘 군을 정의하고 각각 하나의 클래스로 캡슐화한 다음, 필요할 때 서로 교환해서 사용할 수 있게 해준다.

템플릿 메서드 패턴(Template Method) : 상위 클래스에서는 추상적으로 표현하고 그 구체적인 내용은 하위 클래스에서 결정되는 디자인 패턴

방문자 패턴(Visitor) : 각 클래스의 데이터 구조로부터 처리 기능을 분리하여 별도의 visitor 클래스로 만들어놓고 해당 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업을 수행하도록 하는 것

중재자 패턴(Mediator) : 클래스간의 복잡한 상호작용을 캡슐화하여 한 클래스에 위임해서 처리 하는 디자인 패턴

상태 패턴(State) : 동일한 동작을 객체의 상태에 따라 다르게 처리해야 할 때 사용하는 디자인 패턴

기념물 패턴(Memento) : Ctrl + z 와 같은 undo 기능 개발할 때 유용한 디자인패턴. 클래스 설계 관점에서 객체의 정보를 저장

 

디자인 패턴의 장점

개발의 효율성과 유지 보수성, 운용성 등의 품질이 높아진다.

프로그램 최적화를 돕는다.

소프트웨어 구조 파악이 용이하다.

객체지향 설계 및 구형의 생산성을 높이는 데 적합하다.

재사용을 위한 개발 시간이 단축된다.

객체지향 언어와 함께 이용될 때 효율이 극대화된다.

 

디자인 패턴의 단점

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

초기 투자 비용이 부담된다.

 

반응형

'컴퓨터 | IT' 카테고리의 다른 글

제품 소프트웨어 패키징 도구  (3) 2021.02.23
인터페이스 요구 사항 검증 방법  (4) 2021.02.22
코드의 종류  (2) 2021.02.20
소프트웨어 아키텍처 패턴  (4) 2021.02.19
객체 지향 설계 원칙(SOLID)  (3) 2021.02.17

댓글