ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring/디자인패턴] 어댑터 패턴
    Framework/Spring 2021. 7. 18. 22:07


    어댑터 패턴

    • 어댑터는 실생활에서 100v를 220v로 변경해주거나, 그 반대로 해주는 흔히 돼지코라고 불리는 변환기를 예로 들 수 있다.
    • 호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용할 수 있도록 한다.

     

    어댑터 패턴 예시

    <Electronic110V>

    public interface Electronic110V {
        void powerOn();
    }

     

    <Electronic220V>

    public interface Electronic220V {
        void connect();
    }

     

    <HairDryer>

    public class HairDryer implements Electronic110V{
        @Override
        public void powerOn() {
            System.out.println("헤어드라이기 110v on");
        }
    }
    • 헤어드라이어는 110v를 기반으로 동작한다.

     

    <Cleaner>

    public class Cleaner implements Electronic220V{
        @Override
        public void connect() {
            System.out.println("청소기 220v on");
        }
    }
    • 청소기는 220v를 기반으로 동작한다.

     

    <SocketAdapter>

    public class SocketAdapter implements Electronic110V{
        private Electronic220V electronic220V;
    
        public SocketAdapter(Electronic220V electronic220V){
            this.electronic220V = electronic220V;
        }
    
        @Override
        public void powerOn() {
            electronic220V.connect();
        }
    }
    • 220v의 전자제품을 110v에 사용하기 위해 어댑터 패턴을 이용하여 구현한다. 해당 클래스는 220v -> 110v이기 때문에 Electronic110V를 implements받는다.
    • 생성자에서 매개변수로 들어온 electronic220v를 해당 객체로 대입한다.

     

    <Main>

    public class Main {
    
        public static void main(String[] args) {
            HairDryer hairDryer = new HairDryer();
            connect(hairDryer);
    
            Cleaner cleaner = new Cleaner();
            Electronic110V adapter = new SocketAdapter(cleaner);
            connect(adapter);
        }
    
        //콘센트
        public static void connect(Electronic110V electronic110V){
            electronic110V.powerOn();
        }
    }
    • 클리너는 220v제품이라 사용할 수 없지만 어댑터를 사용함으로써 동일하게 연결할 수 있게 되었다.

    댓글

[Everything's gonna be fine]