AdapterPattern
Target이 OtherConcreate를 상속
상속 기호 implements?
상황 : client가 target과 otherConcreteㄹ르 잘 쓰고 있는데
Adaptee를 써야하는 상황이 왔을 때 Client를 수정하지 않고 Adaptee를 사용하자.
위의 다이어그램을 구현하기.
만드는 순서 역시 중요하다. Target이나 Adaptee를 먼저 만들어야 한다.
실제 Client에서 target을 통해 otherContrete를 사용해 보자.
Target 인터페이스에 request();
package kr.or.ddit.designpattern.adapterpattern; public interface Target { public void request(); }
OtherConcreate에 request()구현체
package kr.or.ddit.designpattern.adapterpattern; public interface Target { public void request(); }
Client에서 실행
package kr.or.ddit.designpattern.adapterpattern; public class Client { private Target target; public Client(Target target) { super(); this.target = target; } public void execute() { target.request(); } public static void main(String[] args) { // Target target = new OtherConcrete(); Adaptee adaptee = new Adaptee(); Target target = new Adapter(adaptee); Client client = new Client(target); client.execute(); } }
어뎁티를 만들고 사용하기
Cilent에서 바로 쓰려면 Client의 코드들을 모두 수정해야한다.
그러니 Adaptee를 쓸수 있게끔 Adapter라는 클래스를 생성.
Target인터페이스를 상속받는 Adapter 클래스를 만들어준다.
상속 받은 후 request를 override로 덮어씌운다.
이렇게 바꾸면 Client에서 adaptee를 사용할 수 있다.
이것도 사용하는 법이 비슷하다.
이렇게 메인 코드를 수정하지 않고 상속과 구현을 통해 쓸 수 있게 하는 것을 AdapterPattern이라고 한다.
Uploaded by Notion2Tistory v1.1.0