본문 바로가기
언어/JAVA

Adapter pattern

by step 1 2021. 6. 6.
반응형

어뎁터 패턴은 실생활에서는 110v를 220v로 변경해주거나, 그 반대로 해주는 흔히 돼지코 라고 불리는 변환기를 예로 들 수 있다.

호환성이 없는 기존 클래스의 인터페이스를 변환하여 재사용 할 수 있도록 한다.

SOLID중에서 개방폐쇄 원칙 (OCP)를 따른다.

package com.company.design.adapter;

public interface Electronic110v {

    void powerOn();
}
package com.company.design.adapter;

public interface Electronic220v {

    void connect();
}
package com.company.design.adapter;

public class SocketAdapter implements Electronic110v{

    private Electronic220v electronic220v;

//  110V를 220V로 변환
    public SocketAdapter(Electronic220v electronic220v){
        this.electronic220v = electronic220v;
    }

    @Override
    public void powerOn() {
        electronic220v.connect();
    }
}
package com.company.design.adapter;

public class AirConditioner implements Electronic220v{
    @Override
    public void connect() {
        System.out.println("에어컨 220V on");
    }
}
package com.company.design.adapter;

public class Cleaner implements Electronic220v{

    @Override
    public void connect() {
        System.out.println("청소기 220V on");
    }
}
package com.company.design.adapter;

public class HairDryer implements Electronic110v{

    @Override
    public void powerOn() {
        System.out.println("헤어 드라이기 110v on");
    }
}
package com.company.design;

import com.company.design.adapter.*;
import com.company.design.singleton.Aclazz;
import com.company.design.singleton.Bclazz;
import com.company.design.singleton.SocketClient;

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);

        AirConditioner airConditioner = new AirConditioner();
        Electronic110v airAdapter = new SocketAdapter(airConditioner);
        connect(airAdapter);
    }

//    콘센트
    public static void connect(Electronic110v electronic110v) {
        electronic110v.powerOn();
    }
}

반응형

'언어 > JAVA' 카테고리의 다른 글

데코레이터 패턴  (0) 2021.06.06
Proxy pattern  (0) 2021.06.06
POJO JAVA  (0) 2021.06.06
객체지향 설계 5원칙 SOLID  (0) 2021.06.06
알고리즘 7  (0) 2021.05.30