어댑터, 퍼싸드 패턴이란?

문딤·2022년 7월 22일
0

어댑터 패턴이란?

원하는 기능을 구현하려 할 때 
구현되어있는 기존클래스를 인스턴스로 가져와서 
클라이언트가 요구하는 기능으로 변환시킨다.

기존에 만들어져 있던 칠면조 인터페이스와 구현된 와일드칠면조 클래스

타겟인 오리 인터페이스와 객체

Duck 객체가 모자라서 Turkey 객체를 대신 사용해야 하는 상황일 때

타겟 인터페이스인 오리 인터페이스를 구현한 칠면조Adapter클래스 칠면조 인스턴스를 받아서 객체를 생성.
콘솔에 동작내역을 확인하면, 칠면조처럼 골록 골록하고 있다.
오리의 메소드를 사용해서 칠면조처럼 변환되었음을 알 수 있다.

클라이언트에서 어댑터를 사용하는 방법

  1. 클라이언트에서 타겟 인터페이스를 사용하여 메소드를 호출함으로써 어댑터에 요청을 한다.
  2. 어댑터에서는 어댑티 인터페이스를 사용하여 그 요청을 어댑티 에 대한 하나 이상의 메소드를 호출로 변환한다.
  3. 클라이언트에서는 호출 결과를 받긴 하지만 중간에 어댑터가 껴 있는지는 전혀 알지 못한다.

클래스 어댑터 vs 객체 어댑터

차이점.

클래스 💨 어댑터는 상속을 사용함.
 객체  💨 어댑터는 합성을 사용함.
위 그림을 보면, 
adapter가 메소드를 사용할 때 specificOperation 메소드를 호출하는데,
내부 객체로 오는지 상속을 통해오는지의 방법의 차이일뿐 동일한 형태이다. 

패턴의 장단점.

장점

Adapter 패턴의 가장 큰 장점은 기존 코드를 변경하지 않아도 된다는 점이다.
기존 코드를 변경하지 않기 때문에 클래스 재활용성을 증가시킬 수 있다.

단점

구성요소를 위해 클래스를 증가시켜야 하기 때문에 복잡도가 증가할 수 있습니다.
클래스 Adapter 의 경우 상속을 사용하기 때문에 유연하지 못합니다.
반면에 객체 Adapter 의 경우는 대부분의 코드를 다시 작성해야 하기 때문에 
효율적이지 못합니다.

==========================================================================================================================

퍼사드 패턴이란?

어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공한다.
퍼사드에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있다.

퍼사드(Facade) 라는 것은 무엇일까?

퍼사드란, 프랑스어 Façade 에서 유래된 단어로 건물의 외관이라는 뜻을 가지고 있다. 건물의 외벽에서 보면 안의 구조는 보이지 않는다.

예시 - 영화를 볼 때


영화 볼 때 마실 음료수

넷플릭스를 켤 리모콘

영화를 찾기까지의 과정들

영화와 음료이름을 매개변수로 받는 facade 클래스
view_movie 메소드 동작시 해당하는 알고리즘이 모두 실행된다.

facade 객체를 생성해서 view_movie 메소드를 실행하였다.
해당하는 내역들이 콘솔에 찍혔다.

패턴의 장단점.

장점

Subsystem 간의 결합도를 낮출 수 있다.
Client 입장에서 Subsystem을 사용해야 할때 다루어야 할 객체의 수를 줄여준다.
클라이언트 입장에서 좀 더 간결하게 코드를 알아볼 수 있게 해준다.

단점

Client에게 내부 Subsystem까지 숨길 수 없다.
Client가 Subsystem 내부의 클래스를 직접 사용하는 것을 막을 수 없다.

profile
풀스택개발자가 될래요

0개의 댓글