일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- spring boot CRUD
- REST API
- 자바스크립트 클래스
- Intellij
- Spring REST API
- Oracle
- exceptiontransfer
- 오라클
- spring 에러
- Spring boot
- spring boot rest api
- 자바스크립트
- spring boot post api
- Spring
- 전자정부프레임워크
- 디자인 패턴
- 스프링
- 인텔리제이
- javascript class
- egov
- spring 설정 파일
- 스프링 에러
- javascript
- 메이븐
- 자바스크립트 class
- pom.xml
- javascript 클래스
- 전자정부 샘플
- 스프링부트 post api
- spring boot error
- Today
- Total
빵구의 개발 메꾸기
어댑터 패턴(Adapter Pattern) 활용 본문
디자인 패턴이란 자주 사용하는 설계 패턴을 정형화해서 가장 최적의 방법으로 개발 할 수 있도록 정해둔 설계이며
알고리즘과 비슷하지만 정답이 있는 것은 아니며 프로젝트의 상황에 맞추어 적용한다.
크게 생성패턴, 구조패턴, 행위패턴으로 나뉘고 지금은 구조패턴 중 하나인 어댑터 패턴(Adapter Pattern)에 대해
설명하고자 한다.
구조패턴은 프로그램 내의 자료 구조나 인터페이스 구조 등 프로그램 구조를 설계하는데 활용 될 수 있는 패턴으로써
클래스와 객체들의 구성을 통해서 더 큰 구조를 만들 수 있게 해준다.
큰 규모의 시스템에서는 많은 클래스들이 서로 의존성을 가지게 되는데 이러한 복잡한 구조를 개발하기 쉽게
만들어주고 유지 보수하기 쉽게 만들어 준다.
어댑터 패턴(Adapter Pattern)은 변환기를 예를 들 수 있다. 호환성이 없는 기존 클래스의 인터페이스를
변환하여 재사용 할 수 있도록 한다.
SOLID중에서 개방폐쇄 원칙(OCP)를 따른다.
<어댑터 패턴(Adapter Pattern) 활용 예시>
① 110V의 어댑터 역할을 하는 인터페이스에 powerOn 메서드의 선언부를 정의한다.
② 220V의 어댑터 역할을 하는 인터페이스에 connect 메서드의 선언부를 정의한다.
③ 헤어드라이기에서 Adapter110V 인터페이스를 implements 받고 오버라이드 된 powerOn 메서드의 구현부를 정의한다.
④ 선풍기에서 Adapter220V 인터페이스를 implements 받고 오버라이드 된 connect 메서드의 구현부를 정의한다.
⑤ 청소기에서 Adapter220V 인터페이스를 implements 받고 오버라이드 된 connect 메서드의 구현부를 정의한다.
<어댑터 패턴(Adapter Pattern) 활용 전>
① 헤어드라이어의 객체를 생성하고 해당 클래스에 정의 된 connect 메서드의 파라미터에 객체를 넘긴다.
② 청소기의 객체를 생성하고 해당 클래스에 정의 된 connect 메서드의 파라미터에 객체를 넘긴다.
하지만 Adapter110V를 implements 받고 있는 헤어드라이어는 connect 메서드의 파라미터로 정상적으로 넘길 수
있었지만 청소기는 Adapter220V를 implements 받고 있기 때문에 파라미터로 넘길 때 다음과 같이 에러가 발생한다.
③ 110V에 대한 객체를 파라미터로 받아서 전원을 키는 메서드이다.
<어댑터 패턴(Adapter Pattern) 활용 후>
① 220V를 110V로 변환하기 위해 Adapter110V를 implements 받는 SocketAdapter 클래스를 만든다.
② 기본 생성자에서 220V에 대한 객체를 파라미터로 받고 해당 클래스의 adapter220V 프로퍼티에 담아준다.
③ SocketAdapter에 대한 객체를 생성하면 기본 생성자에 의해 adapter220V 프로퍼티에는 객체가 담기게 되고
오버라이드 된 powerOn 메서드를 타면 Adapter220V를 implements 받는 객체의 connect 메서드가 호출된다.
④ 헤어드라이어의 객체를 생성하고 해당 클래스에 정의 된 connect 메서드의 파라미터에 객체를 넘긴다.
⑤ 청소기의 객체를 생성하고 해당 클래스에 정의 된 connect 메서드의 파라미터에 객체를 넘길수 없기 때문에
220V를 110V로 변환하기 위해 SocketAdapter 객체를 생성하고 청소기 객체를 파라미터로 넘긴다.
⑥ console 창에 정상적으로 출력된 것을 볼 수 있다.
'BACK-END > DESIGN PATTERN' 카테고리의 다른 글
싱글톤 패턴(Singleton Pattern) 활용 (0) | 2022.06.12 |
---|