오늘부터 공부한다
디자인 패턴 본문
디자인 패턴이란?
소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 발생했을 때 재사용할 수 있는 해결책이다.
디자인 패턴의 장점
1) 개발자(설계자) 간의 원활한 의사소통
: 여러 디자인 패턴의 특성을 잘 알고 있어 문제해결 시 어떤 디자인 패턴을 사용하면 좋을지 해결책을 논의할 수 있다.
2) 소프트웨어 구조 파악 용이
: 디자인 패턴의 특성을 잘 알고 있기에 어떤 디자인 패턴이 설계할 때 사용되었는지 알면 소프트웨어 전체구조를 쉽게 파악 가능하다
3) 재사용을 통한 개발 시간 단축
: 이미 만들어 놓은 디자인 패턴을 사용하므로 개발시간을 단축시킬 수 있다.
4) 설계 변경 요청에 대한 유연한 대처
: 사용자의 지속적인 추가 요청, 환경 변화 등의 설계 변경 요청에 쉽고 빠르게 대처 가능하다
디자인 패턴의 단점
1) 객체지향 설계/ 구현 위주
: 디자인 패턴은 객체지향 설계/구현에 많이 사용되는데, C언어를 주로 사용하는 구조적 설계/구현에서도 사용할 수 있지만 너무 복잡해서 큰 도움이 되지 않는다.
2) 초기 투자 비용 부담
: 디자인 패턴을 적용 및 설계하면 디자인 패턴을 사용하지 않은 경우보다 초기에 시간과 노력이 많이 든다.
대표적인 디자인패턴 8가지
Singleton Pattern
- 각 클래스가 하나의 인스턴스만 갖도록 하는 디자인패턴이다.
- 생성자의 접근제어자를 private로 정의하며, 하나의 인스턴스를 반환하는 getInstance() 메소드를 사용한다.
Strategy Pattern
- 객체가 수행할 수 있는 행위들을 미리 만들어 두고, 동적으로 행위의 변경이 필요한 경우 행위를 직접 수정하는 대신 전략을 바꾸는 것으로 구현하는 디자인패턴이다.
- 행위를 추상화하여 인스턴스로 정의한 뒤에, 구체적인 행위를 구현 클래스로 작성하며, 필요에 따라 각 행위 클래스를 주입하여 사용한다.
Decorator Pattern
- 객체에 추가해야 할 기능이 많은 경우에 각 기능을 클래스로 만들어 두고 필요에 따라 조립하여 사용하는 디자인패턴이다.
Proxy Pattern
- 객체에 대한 직접적인 접근을 제어하기 위해, 대리자 역할을 하는 클래스를 구성하는 디자인패턴이다.
- 프록시 클래스는 객체를 요청하기 전에 권한 처리나, 객체 생성에 시간이 걸리는 작업의 백그라운드 처리 등을 수행할 수 있다.
Template Method Pattern
- 유사하지만 부분적으로 다른 작업을 수행하는 비슷한 클래스를 여러개 만들어야 하는 경우에, 상위 클래스에서 처리 흐름을 제어하고 하위 클래스에서 처리의 내용을 구체화하도록 구성하는 디자인패턴이다.
Template Callback Pattern
- 전략 패턴에 익명 클래스를 가미하여 사용하는 디자인패턴이다. 전략 패턴의 컨텍스트를 템플릿, 익명 클래스로부터 생성되는 객체를 콜백이라 한다.
- 전략 패턴의 기본적인 구조에서 변경이 필요한 메소드 단위로 익명객체를 생성하여 전달하는 방식이다.
Factory Method Pattern
- 조건에 따라 다른 객체를 생성해야 하는 경우, 객체의 생성을 팩토리 클래스에 위임하는 디자인패턴이다.
- 객체간 결합도를 낮추고, 유지보수가 용이하게 한다.
Adapter Pattern
- 어떤 클래스의 인터페이스를 다른 인터페이스로 변환하여, 호환되지 않는 인터페이스들을 함께 사용할 수 있게 하는 디자인패턴이다.
'소프트웨어 공학' 카테고리의 다른 글
시큐어 코딩(Secure Coding) (0) | 2019.10.16 |
---|---|
QA와 QC (0) | 2019.10.16 |
(OS)교착상태 (Deadlock) (0) | 2019.10.15 |
블록체인(Block Chain) (0) | 2019.10.14 |
클라이드 컴퓨팅 (Cloud Computing)이란? (0) | 2019.10.14 |