본문 바로가기
C++/기본

[C++] 29. 구조패턴

by 위니밍 2025. 3. 29.
반응형
📌 요약: Adapter 패턴 | 인터페이스 변환 | 호환성 문제 해결 | 구조 패턴

🔌 어댑터 패턴 (Adapter Pattern)

어댑터 패턴은 서로 호환되지 않는 인터페이스를 연결해주는 디자인 패턴입니다.
기존 클래스의 인터페이스를 사용자가 원하는 형태로 변환하여, 인터페이스 호환성 문제를 해결합니다.

📦 구조 설명

- Voltage220V: 기존의 220V 전원을 사용하는 클래스
- Voltage110V: 새로 요구되는 110V 인터페이스
- VoltageAdapter: 220V를 110V로 변환해주는 어댑터 역할의 클래스

✅ 클래스 구조
// 110V 전원을 사용하는 장치
class Voltage110V {
public:
    virtual void connect110V() = 0;
    virtual ~Voltage110V() {}
};

// 220V 전원을 사용하는 장치
class Voltage220V {
public:
    virtual void connect220V() {
        cout << "220V 전원에 연결됨" << endl;
    }
};

// Voltage220V를 Voltage110V로 변환하는 어댑터
class VoltageAdapter : public Voltage110V {
private:
    Voltage220V* valtage220V;

public:
    VoltageAdapter(Voltage220V* v220) {
        valtage220V = v220;
    }

    virtual void connect110V() override {
        cout << "어댑터를 사용하여 220V -> 110V 변환" << endl;
        valtage220V->connect220V();
    }
};
🧪 사용 예제
int main() {
    Voltage220V* v220 = new Voltage220V();

    Voltage110V* v110 = new VoltageAdapter(v220);
    v110->connect110V();

    delete v220;
    delete v110;
    return 0;
}
🤖 실행 순서

1. Voltage220V 인스턴스를 생성
2. VoltageAdapter를 통해 Voltage220VVoltage110V로 변환
3. connect110V()를 호출하면 어댑터 내부에서 220V 연결 메서드가 호출됨

반응형

'C++ > 기본' 카테고리의 다른 글

[C++] 31. Builder  (0) 2025.03.29
[C++] 30. 행동패턴  (0) 2025.03.29
[C++] 28. Exception  (0) 2025.03.29
[C++] 27. Singleton  (0) 2025.03.29
[C++] 26. Template  (0) 2025.03.29