기록 저장소
디자인 패턴 본문
1. 정의
애플리케이션 개발시에 자주 발생하는 문제들을 해결하기 위한 일반적이고 추상화된 해결 방식을 말한다. GoF라고 불리는 네명의 개발자는 23가지의 디자인 패턴을 생성, 구조, 행위의 3가지로 분류한 바 있다.
2. 대표적인 디자인패턴 8가지
2.1. Singleton Pattern
- 각 클래스가 하나의 인스턴스만 갖도록 하는 디자인패턴이다.
- 생성자의 접근제어자를 private로 정의하며, 하나의 인스턴스를 반환하는 getInstance() 메소드를 사용한다.
2.2. Strategy Pattern
- 객체가 수행할 수 있는 행위들을 미리 만들어 두고, 동적으로 행위의 변경이 필요한 경우 행위를 직접 수정하는 대신 전략을 바꾸는 것으로 구현하는 디자인패턴이다.
- 행위를 추상화하여 인스턴스로 정의한 뒤에, 구체적인 행위를 구현 클래스로 작성하며, 필요에 따라 각 행위 클래스를 주입하여 사용한다.
2.3. Decorator Pattern
- 객체에 추가해야 할 기능이 많은 경우에 각 기능을 클래스로 만들어 두고 필요에 따라 조립하여 사용하는 디자인패턴이다.
2.4. Proxy Pattern
- 객체에 대한 직접적인 접근을 제어하기 위해, 대리자 역할을 하는 클래스를 구성하는 디자인패턴이다.
- 프록시 클래스는 객체를 요청하기 전에 권한 처리나, 객체 생성에 시간이 걸리는 작업의 백그라운드 처리 등을 수행할 수 있다.
2.5. Template Method Pattern
- 유사하지만 부분적으로 다른 작업을 수행하는 비슷한 클래스를 여러개 만들어야 하는 경우에, 상위 클래스에서 처리 흐름을 제어하고 하위 클래스에서 처리의 내용을 구체화하도록 구성하는 디자인패턴이다.
2.6. Template Callback Pattern
- 전략 패턴에 익명 클래스를 가미하여 사용하는 디자인패턴이다. 전략 패턴의 컨텍스트를 템플릿, 익명 클래스로부터 생성되는 객체를 콜백이라 한다.
- 전략 패턴의 기본적인 구조에서 변경이 필요한 메소드 단위로 익명객체를 생성하여 전달하는 방식이다.
2.7. Factory Method Pattern
- 조건에 따라 다른 객체를 생성해야 하는 경우, 객체의 생성을 팩토리 클래스에 위임하는 디자인패턴이다.
- 객체간 결합도를 낮추고, 유지보수가 용이하게 한다.
2.8. Adapter Pattern
- 어떤 클래스의 인터페이스를 다른 인터페이스로 변환하여, 호환되지 않는 인터페이스들을 함께 사용할 수 있게 하는 디자인패턴이다.
[ 참고 ]
* Reference
- https://gmlwjd9405.github.io/2018/07/06/design-pattern.html
[Design Pattern] 디자인 패턴 종류 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
- https://brunch.co.kr/@springboot/31
웹프로그래밍 스터디 - 3.디자인패턴(2)-8가지 패턴
- 8가지 디자인 패턴 정리 | "웹프로그래밍 스터디"라는 주제로 글을 작성하고자 한다. 그동안 공부하고 싶었던 주제를 정리했는데, 웹 개발의 전반적인 내용이 포함될 예정이다. 아마 바쁘다는 핑계로 글 올라오는 속도가 매우 느릴 수 있다. 하루에 한 시간씩이라도 시간을 내서 스터디해야 한다!!라고 나 자신에게 다짐해본다. 아래와 같은 목차로 진행 예정이며, 목차는 변경될 수는 있다. h
brunch.co.kr
- https://limkydev.tistory.com/84
- https://gmlwjd9405.github.io/2018/07/09/decorator-pattern.html
[Design Pattern] 데코레이터 패턴이란 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
- https://gmlwjd9405.github.io/2018/07/13/template-method-pattern.html
[Design Pattern] 템플릿 메서드 패턴이란 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
- https://copynull.tistory.com/124
템플릿 메서드 패턴 (Template Method Pattern)
Template Method Pattern - 템플릿 메서드 패턴 상위 클래스에서 처리의 흐름을 제어하며, 하위클래스에서 처리의 내용을 구체화한다. 여러 클래스에 공통되는 사항은 상위 추상 클래스에서 구현하고, 각각의 상..
copynull.tistory.com
- https://joont.tistory.com/148
템플릿 콜백 패턴
토비의 스프링은 참으로 좋은 책입니다. 새로운 기술을 소개할 때, 그냥 사용법만을 소개하지 않고 그 기술의 바탕이 되는 지식을 먼저 알려주거든요. 정말 추천합니다.. 여담이었고요, 이번에는 어떠한 기술의 바..
joont.tistory.com
- https://victorydntmd.tistory.com/299
[디자인패턴] 팩토리 메서드 패턴 ( Factory Method Pattern )
팩토리 메서드 패턴 ( Factory Method Pattern ) 어떤 상황에서 조건에 따라 객체를 다르게 생성해야 할 때가 있습니다. 예를 들면, 사용자의 입력값에 따라 하는 일이 달라질 경우, 분기를 통해 특정 객체를 생성..
victorydntmd.tistory.com
[소프트웨어/디자인패턴] 어댑터 패턴 (Adapter Pattern)
어댑터 패턴은 아무 관련없는 인터페이스간의 호환성을 도와준다. Context 사실 adapter 는 일상생활에서도 많이 볼 수 있는 형식과 같다. 흔히 말하는 돼지코와 같은 원리이다. 먼저 아래와 같은 상황이 주어진..
sticky32.tistory.com
'Note > 개념정리' 카테고리의 다른 글
REST API (0) | 2019.08.20 |
---|---|
Maven (0) | 2019.08.20 |
객체 지향 프로그래밍(Object Oriented Programming) (0) | 2019.08.19 |
자바(Java)의 메모리 구조 (0) | 2019.08.19 |
라이브러리와 프레임워크 (0) | 2019.08.19 |