빵구의 개발 메꾸기

어댑터 패턴(Adapter Pattern) 활용 본문

BACK-END/DESIGN PATTERN

어댑터 패턴(Adapter Pattern) 활용

bkjo94 2022. 6. 15. 23:16

디자인 패턴이란 자주 사용하는 설계 패턴을 정형화해서 가장 최적의 방법으로 개발 할 수 있도록 정해둔 설계이며
알고리즘과 비슷하지만 정답이 있는 것은 아니며 프로젝트의 상황에 맞추어 적용한다.
크게 생성패턴, 구조패턴, 행위패턴으로 나뉘고 지금은 구조패턴 중 하나인 어댑터 패턴(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
Comments