CS

[JAVA](DesignPattern)Adapter(Wrapper)Pattern

뱅타 2021. 4. 13. 22:13

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이라고 한다.

728x90
반응형

'CS' 카테고리의 다른 글

[IT]Framework와 Library의 차이  (0) 2021.04.22
[JSP](javascript)popover(bootstrap) 비동기요청(ajax)로 title, content 가져오기  (0) 2021.04.18
[JSP] EL  (0) 2021.04.15
[JAVA]Builder 디자인패턴  (0) 2021.04.07
[CoolSMS] 사용하기  (0) 2021.03.23