TIL 0206

jelly·2025년 2월 6일

어댑터 패턴(Adapter Pattern)은 서로 호환되지 않는 인터페이스를 가진 클래스들이 함께 작업할 수 있도록 도와주는 디자인 패턴입니다.

#include <iostream>

// 기존 인터페이스
class OldSystem {
public:
    void oldRequest() {
        std::cout << "Old system request." << std::endl;
    }
};

// 새로운 인터페이스
class NewSystem {
public:
    virtual void newRequest() = 0; // 순수 가상 함수
};

// 어댑터 클래스
class Adapter : public NewSystem {
private:
    OldSystem* oldSystem;

public:
    Adapter(OldSystem* old) : oldSystem(old) {}

    void newRequest() override {
        // OldSystem의 메서드를 호출
        oldSystem->oldRequest();
    }
};

// 클라이언트 코드
int main() {
    OldSystem* oldSystem = new OldSystem();
    NewSystem* adapter = new Adapter(oldSystem);

    // 새로운 시스템의 요청을 통해 구형 시스템의 요청을 호출
    adapter->newRequest();

    // 메모리 해제
    delete adapter;
    delete oldSystem;

    return 0;
}
profile
jelly

0개의 댓글