디자인 패턴
(소프트 웨어)디자인 패턴이란 특정 문맥에서 공통적으로 발생하는 문제에 대해 쓰이는 재사용 가능한 해결책
목적별로 일정한 패턴이 제시되어 있음
완전한 정답이 되는 알고리즘과 달리 현재 상황에 맞춰 최적화된 패턴을 결정하여 사용하는 것이 좋음
대표적으로 구체화된 디자인 패턴은 GoF(Gang Of Four)에서 제시한 총 23개의 패턴이 있음
※Gof : Erich Gamma , Richard Helm, Ralph Johnson, John Vissides 총 4명을 일컫음
장점
개발자 간의 원활한 협업이 가능
소프트웨어 구조를 파악하기 용이
재사용을 통해 개발시간을 단축
설계 변경이 있을 경우 비교적 원활하게 조치가 가능
단점
객체지향적 설꼐를 고려하여 진행해야 함
초기 투자 비용이 많이 들어감(돈 뿐이 아닌 시간 등 포함)
생성 패턴, 구조 패턴, 행동 패턴 총 3가지로 구분
생성패턴
- 객체를 생성하는 것과 관련된 패턴으로, 객체의 생성과 변경이 전체 시스템에 미치는 영향을 최소화하고, 코드의 유연성을 높여준다.
- Factory Method
- Singleton
- Prototype
- Builder
- Abstract Factory
- Chaining
구조패턴
- 프로그램 내 자료구조나 인터페이스 구조 등 프로그램 구조를 설계하는데 활용될 수 있는 패턴 클래스
- 객체들의 구성을 통해 더 큰 구조를 만들 수 있게 해준다.
- 큰 규모의 시스템에서는 많은 클래스들이 서로 의존성을 가지게 되는데, 이런 복잡한 구조를 개발하기 쉽게 만들어주고 유지보수 하기 쉽게 만들어준다.
- Adapter
- Composite
- Bridge
- Decorator
- Facade
- Flyweight
- Proxy
행위패턴
- 반복적으로 사용되는 객체들의 상호작용을 패턴화한 것으로, 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 제공한다.
- 행위 패턴은 행위 관련 패턴을 사용하여 독립적으로 일을 처리하고자 할 때 사용한다.
- Template Method
- Interpreter
- Iterator
- Observer
- Strategy
- Visitor
- Chain of responsibility
- Command
- Mediator
- State
- Memento
싱글톤 패턴
- 싱글톤 패턴은 어떠한 클래스(객체)가 유일하게 1개만 존재할 때 사용한다.
- 이를 주로 사용하는 곳은 서로 자원을 공유할 때 사용하는데, 실물 세계에서는 프린터가 해당되며 실제 프로그래밍에서는 TCP Socket통신에서 서버와 연결된 connect객체에 주로 사용된다.
어댑터 패턴
- 어댑터는 실생활에서 100v를 220v로 변경해주거나, 그 반대로 해주는 흔히 돼지코라고 불리는 변환기를 예로 들 수 있다.
- 호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용할 수 있도록 한다.
프록시 패턴
- 프록시는 대리인이라는 의미로써, 뭔가를 대신 처리하는 것
- 프록시 클래스를 통해 대신 전달하는 형태로 설계되며, 실제 클라이언트는 프록시로 부터 결과를 받는다.
- 캐시의 기능으로도 활용이 가능하다.
참고 :
'Java > Spring' 카테고리의 다른 글
[Spring] 의존관계 주입(Dependency Injection), 의존성 주입, DI (0) | 2022.12.04 |
---|---|
[Backend] API 패턴 - 레이어드 아키텍처 패턴 (1) | 2022.12.01 |
[Spring]Controller, Repository, Service (0) | 2022.11.29 |
[Spring]REST API (0) | 2022.11.27 |
[Spring] JPA란 ? (0) | 2022.11.27 |
댓글