코드와이
디자인 패턴의 개념과 종류 본문
디자인 패턴
- 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 문제들이 또 발생했을 때 재사용할 수 있는 솔루션
- 이미 만들어져서 잘 되는 것을 다시 만들 필요가 없다는 뜻
GoF 디자인 패턴
More Actions
생성패턴구조패턴행위패턴
구분 | 생성패턴 | 구조패턴 | 행위패턴 |
종류 | 추상 팩토리 빌더 팩토리메서드 프로토타입 싱글턴 |
어댑터 브리지 컴퍼지트 데커레이터 퍼사드 플라이웨이트 프록시 |
책임 연쇄 커맨드 인터프리터 이터레이터 미디에이터 메멘토 옵서저 스테이트 스트래티지 탬플릿 메서드 비지터 |
개념 | 객체 생성에 관련된 패턴 | 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴 | 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴 |
싱글턴 패턴
- 개념
- 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록하는 패턴
- '생성(Creational) 패턴' 중 하나
- 하나의 인스턴스만을 생성하는 책임이 있으며 getInstance 메서드를 통해 모든 클라이언트에게 동일한 인스턴스를 반환하는 작업을 수행
-
public class Printer { // 외부에 제공할 자기 자신의 인스턴스 private static Printer printer = null; private Printer() { } // 자기 자신의 인스턴스를 외부에 제공 public static Printer getPrinter(){ if (printer == null) { // Printer 인스턴스 생성 printer = new Printer(); } return printer; } }
- 문제점
- 다중 스레드에서 Printer 클래스를 이용할 때 인스턴스가 1개 이상 생성될 수도 있다.
Strategy 패턴
- 개념
- 행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있다.
- 어던 목적을 달성하기 위해 일을 수행하는 방식, 비즈니스 규칙, 문제를 해결하는 알고리즘 등
- Strategy
- 인터페이스나 추상 클래스로 외부에서 동일한 방식으로 알고리즘을 호출하는 방법
- ConcreteStrategy
- 스트래티지 패턴에서 명시한 알고리즘을 실제로 구현한 클래스
- Context
- 스트래티지 패턴을 이용하는 역할을 수행
Factory Method 패턴
- 개념
- 객체 생성 처리를 서브 클래스로 분리해 객체 생성의 변화에 대비하는데에 유용
- Product
- 팩토리 메서드로 생성될 객체의 공통 인터페이스
- ConcreteProduct
- 구체적으로 객체가 생성되는 클래스
- Creator
- 팩토리 메서드를 갖는 클래스
- ConcreteCreator
- 팩토리 메서드를 구현하는 클래스로 ConcreteProduct 객체를 생성
Reference
'기타' 카테고리의 다른 글
데이터베이스에 관하여 (0) | 2021.11.30 |
---|---|
Thread란? (0) | 2021.11.29 |
Maven & Gradle (0) | 2021.11.29 |
Web Server vs WAS (0) | 2021.11.29 |
형상관리 툴(CVS, SVN, Git) (0) | 2021.11.29 |