어댑터 패턴의 정의
- 어댑터 패턴(Adapter Pattern)은 특정 클래스 인터페이스를 클라이언트에서 요구하는 다른 인터페이스로 변환합니다. 인터페이스가 호환되지 않아 같이 쓸 수 없었던 클래스를 사용할 수 있게 도와줍니다.
- 이 패턴을 사용하면 호환되지 않는 인터페이스를 사용하는 클라이언트를 그대로 활용할 수 있습니다. 이러면 클라이언트와 구현된 인터페이스를 분리할 수 있으며, 변경 내역이 어댑터에 캡슐화되기에 나중에 인터페이스가 바뀌더라도 클라이언트를 바꿀 필요가 없습니다.
- 어댑터 패턴은 여러 객체지향원칙을 반영하고 있습니다. 어댑티를 새로 바뀐 인터페이스로 감쌀 때 객체 구성(compositon)을 사용합니다. 이런 접근법은 어댑티의 모든 서브클래스에 어댑터를 쓸 수 있다는 장점이 있습니다.
- 그리고 이 패턴은 클라이언트를 특정 구현이 아닌 인터페이스에 연결합니다. 서로 다른 백엔드 클래스로 변환시키는 여러 어댑터를 사용할 수도 있습니다. 이렇게 인터페이스를 기준으로 코딩했기에 타깃 인터페이스만 제대로 유지한다면 나중에 다른 구현을 추가하는 것도 가능합니다.
객체 어댑터와 클래스 어댑터
- 객체 어댑터
- 클래스 어댑터
- 클래스 어댑터 패턴은 다중 상속에서 사용함(자바는 다중상속이 불가능)
- 어댑티를 적응시킬 때 구성을 사용하는 대신, 어댑터를 어댑티와 타깃 클래스의 서브클래스로 만듭니다.
- 장점
- 어댑티 전체를 다시 구현하지 않아도 됨
- 서브클래스임으로 어댑티의 행동을 오버라이드 할 수 있음
- 단점
퍼사드 패턴 맛보기
- 인터페이스를 단순하게 바꾸려고 인터페이스를 변경
- 하나 이상의 클래스 인터페이스를 깔끔하면서도 효과적인 퍼사드로 덮어줌
- 정리
- 데코레이터: 인터페이스는 바꾸지 않고 책임(기능)만 추가
- 어댑터: 하나의 인터페이스를 다른 인터페이스로 변환
- 퍼사드: 인터페이스를 간단하게 변경
- 퍼사드는 인터페이스를 단순하게 만들고 클라이언트와 구성 요소로 이루어진 서브시스템을 분리하는 역할도 합니다. 퍼사드와 어댑터는 모두 여러 개의 클래스를 감쌀 수 잇습니다. 하지만 퍼사드는 인터페이스를 단순하게 만드는 용도로 쓰이는 반면, 어댑터는 인터페이스를 다른 인터페이스로 변환하는 용도로 쓰입니다.
퍼사드 패턴의 정의
- 퍼사드 패턴(Facade Pattern)은 서브시스템에 있는 일련의 인터페이스를 통합 인터페이스로 묶어줍니다. 또한 고수준 인터페이스도 정의하므로 서브시스템을 더 편리하게 사용할 수 있습니다.