티스토리 뷰

생성패턴 (Creational Pattern) 구조패턴 (Structural Pattern) 행위패턴 (Behavioral Pattern)
- 추상 팩토리 (Abstract Factory)
- 팩토리 메소드 (Factory Method)
- 프로토타입 (Prototype)
- 빌더 (Builder)
- 싱글톤 (Singleton)
- 어댑터 (Adapter)
- 컴포지트 (Composite)
- 브리지 (Bridge)
- 데코레이터 (Decorator)
- 플라이웨이트 (Flyweight) 
- 프록시 (Proxy)
- 퍼사드 (Facade)
- 책임 연쇄 (Chain of Responsibility)
- 커맨드 (Command)
- 인터프리터 (Interpreter)
- 이터레이터 (Iterator) 
- 미디에이터 (Mediator)
- 비지터 (Visitor)
- 템플릿 메소드 (Template Method)
- 스테이트 (State)
- 옵저버 (Observer)
- 메멘토 (Memento)
구조패턴 (Structural Pattern)
> 클래스나 객체를 조합해 더 큰 구조를 만드는 패턴
> 객체들을 묶어서 새로운 기능 제공
Adapter 패턴?
  • 이미 만들어진 것을 필요한 것으로 사용할 수 있도록 해주는 패턴
  • ex) 220v -> 110v 호환어댑터 / C타입충전기 -> 8핀충전기 어댑터

 

Adapter 패턴구조

 

  • Target : 필요한 메소드 결정 (ex. 아이폰 충전중)
  • Client : Target 역할의 메소드 사용 (ex. 아이폰 본체)
  • Adaptee : 이미 만들어져 있는 것, 기존 제공되는 구현 (ex. 아이폰 바꾸기 전 갤럭시 충전기)
  • Adapter : Adaptee를 이용해 필요한 것 구현 (ex. 갤럭시 -> 아이폰 호환 충전어댑터)

 

 

Adapter 패턴이 필요한 상황
  • 이미 존재하고 있는 것과 비슷하게 새로 구현이 필요할 경우 (기존 API는 충분한 검증이 된 것으로 안정성 up)
  • 기존 소스 수정이 필요할 경우, 의존하는 API들 테스트도 다시 해야하기 때문에 어댑터 패턴으로 side-effect 최소화
  • 구 버전과 신 버전의 호환이 필요할 경우

 

적용 예제
  • 기존 일반 배송만 있다가 빠른 배송이 추가 되었다!!

https://github.com/jjjayyy/Design_Pattern_Sample_With_Springboot

 

GitHub - jjjayyy/Design_Pattern_Sample_With_Springboot

Contribute to jjjayyy/Design_Pattern_Sample_With_Springboot development by creating an account on GitHub.

github.com

댓글