어댑터 패턴(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;
}