디자인 패턴(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 |
댓글