4차산업혁명의 일꾼/Java&Spring웹개발과 서버 컴퓨터

디자인패턴 5 : Adapter Pattern(호환)

르무엘 2023. 3. 4. 21:21

 

https://github.com/MyoungSoo7/DesignPattern

 

GitHub - MyoungSoo7/DesignPattern

Contribute to MyoungSoo7/DesignPattern development by creating an account on GitHub.

github.com

박은종의 객체지향 설계를 위한 디자인패턴 with 자바

Adapter Pattern : 호환

  • 서로 다른 인터페이스를 중간에서 연결해주는 기능
  • 이미 사용중이거나 정의된 인터페이스들을 중간에서 맞춰서 적용해 줄 수 있음
  • 예) 안드로이드 ListView Adpter

 

  • 클라이언트에서 사용하던 방식대로 호출하여 사용할 수 있도록 조정해주는 기능
  • 서로 일치하지 않는 인터페이스를 변경하지 않고 중간에서 호출하여 사용할 수 있도록 제공
  • Wrapper

 

  • Target : 클라이언트가 사용할 인터페이스를 정의 하고 있는 클래스
  • Client : Target 인터페이스를 사용하는 객체
  • Adaptee : 실제의 새롭거나 적용될 기능이 제공되는 클래스
  • Adapter : Target 인터페이스에 Adaptee의 인터페이스를 맞춰주는 클래스

 

 

package com.backend.bakckend.designpattern.adapter;



interface Print{
    abstract void printWeak();
    abstract void printStrong();
}

class Banner{
    private String string;
    public Banner(String string){
        this.string = string;
    }
    public void showWithParen(){
        System.out.println("(" + string + ")");
    }
    public void showWithAster(){
        System.out.println("*" + string + "*");
    }
}

class PrintBanner extends Banner implements Print{
    public PrintBanner(String string){
        super(string);
    }
    public void printWeak(){
        showWithParen();
    }
    public void printStrong(){
        showWithAster();
    }
}

public class Adapter {


    public static void main(String[] args) {
        Print p = new PrintBanner("Hello");
        p.printWeak();
        p.printStrong();
    }
}

 

 

 

<tenping class="adsbytenping" style="width:100%;max-width:768px;margin:0px auto;display:block;" tenping-ad-display-type="1LawCE8FqKOhetXZhMopsQ%3d%3d" tenping-ad-client="CJLGE%2b3msU4%2fdQqGqzeNme2LlLZrxcjMISLpeKaay3AXffFr4DhanzC%2b%2ftb89xLM"></tenping>
                    <script async src="//ads.tenping.kr/scripts/adsbytenping.min.js"></script>
LIST