디자인 패턴
[디자인 패턴] 9. 어댑터 패턴
Song hyun
2024. 9. 26. 11:06
728x90
반응형
[디자인 패턴] 9. 어댑터 패턴
1. 어댑터 패턴이란?
-어댑터 패턴(Adapter Pattern)은 호환되지 않는 인터페이스를 가진 클래스들을 함께 동작할 수 있도록 변환해주는 디자인 패턴이다.
=> 즉, 기존 클래스의 인터페이스가 요구사항과 맞지 않을 때, 새로운 인터페이스를 기존 클래스에 맞추어주는 역할!
=> 이를 통해 호환성 문제를 해결하고, 새로운 코드와 결합할 수 있다!
=> 정리: 어댑터 패턴은 서로 다른 인터페이스를 가진 객체들이 함께 동작할 수 있도록 변환해주는 패턴이다!!
2. 시나리오 코드
(1) MyHouse.java
package adapter;
public class MyHouse {
// 정적 메서드 (기능)
// 집에 220V 전기 콘센트를 연결하는 메서드
public static void homeConnect(IElectronic220v electronic220v){
// 청소기, 드라이어기, 냉장고, TV
electronic220v.connect();
}
public static void main(String[] args) {
// 1.
// 집 콘센트에 220v 스펙을 구현한 에어컨을 연결해보자.
AirConditioner airConditioner = new AirConditioner();
homeConnect(airConditioner);
HairDryer dryer = new HairDryer();
// 문제 발생
// homeConnect(dryer); 220v에는 연결 불가
// 어댑터 클래스를 사왔음
ElectronicAdapter 헤어드라이기연결어댑터 = new ElectronicAdapter(dryer);
homeConnect(헤어드라이기연결어댑터);
} // end of main
} // end of MyHouse
// 스펙 : 220V 가전기기 인터페이스
interface IElectronic220v{
void connect();
}
interface IElectronic110v{
void connect();
}
/**
* InnerMyHouse
*/
class AirConditioner implements IElectronic220v {
@Override
public void connect() {
System.out.println("에어컨 연결 220v on");
}
}
class HairDryer implements IElectronic110v {
@Override
public void connect() {
System.out.println("헤어드라이기 연결 110v on");
}
}
(2) ElectronicAdapter.java
package adapter;
// 핵심 개념
// 어댑터 클래스는 두 객체 간의 중재자로서, 서로 다른 인터페이스를 가진 객체들이
// 함께 동작할 수 있게 한다.
// 어댑터 클래스 : 110v 기기를 220v 전압에서 사용할 수 있도록 변환하기
// 2. 변환하고자 하는 스펙을 구현해야 한다.
public class ElectronicAdapter implements IElectronic220v{
// 1. 변환시킬 스펙을 포함 관계로 가지고 있어야 한다.
private IElectronic110v electronic110v;
// 3. 생성자를 통해서 110v 가전기기를 주입받음.
// 이를 통해 110v와 220v를 연결하게 처리한다.
public ElectronicAdapter(IElectronic110v electronic110v) {
// 멤버 변수에 초기화 처리
this.electronic110v = electronic110v;
}
@Override
public void connect() {
// 어댑터는 220v 인터페이스로 호출된 메서드를 110v 기기의 connect()로 변환하여 실행한다.
electronic110v.connect();
System.out.println("어댑터를 통해 110v 가전기기를 220v 스펙에 연결합니다.");
}
}
728x90
반응형