디자인 패턴이란
디자인 패턴은 소프트웨어 설계 과정에서 빈번하게 발생하는 문제를 정리해서 상황에 따라 간편하게 적용할 수 있게 정리한 해법이다. 디자인 패턴을 잘 활용하면 시간과 노력, 시행착오를 줄일 수 있다.
디자인 패턴 종류
디자인 패턴은 용도에 따라 생성, 행동, 구조의 3가지 범주로 나뉘어진다.
1. 생성 패턴(Creational Pattern)
객체 인스턴스를 생성하는 패턴으로, 클라이언트와 그 클라이언트가 생성해야 하는 객체 인스턴스 사이의 연결을 끊어주는 패턴
- 싱글턴 패턴(Singleton Pattern) - 특정 클래스에 객체 인스턴스가 하나만 만들어지도록 해주는 패턴. 싱글턴 패턴을 사용하면 전역 변수를 사용할 때와 마찬가지로 객체 인스턴스를 어디서든지 액세스 할 수 있게 만들 수 있다. 클래스 인스턴스를 하나만 만들고 그 인스턴스로의 전역 접근을 제공한다.
- 추상 팩토리 패턴(Abstract Factory Pattern) - 구상 클래스에 의존하지 않고도 서로 연관되거나 의존적인 객체로 이루어진 제품군을 생산하는 인터페이스를 제공. 구상 클래스는 서브 클래스에서 만든다.
- 팩토리 메서드 패턴(Factory Method Pattern) - 객체 생성 처리를 서브 클래스로 분리해 처리하도록 캡슐화하는 패
- 빌더 패턴(Builder Pattern) - 복잡한 객체를 생성하는 클래스와 표현하는 클래스를 분리하여, 동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법
2. 행동 패턴(Behavioral Pattern)
클래스와 객체들이 상호작용하는 방법과 역할을 분담하는 방법을 다루는 패턴으로, 한 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분배하는지, 또 그렇게 하면서도 객체 사이의 결합도를 최소화하는 것에 중점을 둔다.
- 템플릿 메소드 패턴(Template Method Pattern) - 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 알고리즘의 구조는 그대로 유지하면서 알고리즘의 특정 단계를 서브클래스에서 구현 혹은 재정의하는 패턴
- 상태 패턴(State Pattern) - 객체의 내부 상태가 바뀜에 따라서 객체의 행위 내용을 변경해주는 패턴
- 전략 패턴(Strategy Pattern) - 행위를 클래스로 캡술화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴
- 옵저버 패턴(Observer Pattern) - 한 객체의 상태 변화에 따라 다른 객체의 상태도 연동되도록 일대다 객체 의존 관계를 구성하는 패턴
- 커맨드 패턴(Command Pattern) - 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴
3. 구조 패턴(Structural Pattern)
클래스와 객체를 조합해 더 큰 구조를 만드는 패턴
- 데코레이터 패턴(Decorator Pattern) - 객체의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있게 해주는 패턴
- 프록시 패턴(Proxy Pattern) - 특정 객체로의 접근을 제어하는 대리인을 제공하는 패턴
- 컴포지트 패턴(Composite Pattern) - 클라이언트에서 개별 객체와 복합 객체를 똑같은 방법으로 다룰 수 있는 패턴
- 어댑터 패턴(Adapter Pattern) - 특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환하여, 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있도록 하는 패턴
References
https://m.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS8616098823
'Study' 카테고리의 다른 글
[JAVA] 생성자 대신 정적 팩터리 메서드를 고려하라 (0) | 2023.10.18 |
---|---|
[JAVA] String Pool과 불변성 (0) | 2023.07.14 |