1. 적응자 패턴이란?
적응자 패턴은 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 디자인 패턴입니다. 이 패턴을 사용하면 인터페이스가 호환되지 않아 함께 작동할 수 없는 클래스들이 함께 작동하도록 할 수 있습니다.
2. 적응자 패턴의 구조
적응자 패턴은 다음과 같은 세 가지 주요 구성 요소로 이루어져 있습니다.
- Target: 사용자가 기대하는 인터페이스를 정의합니다.
- Adaptee: 적응되어야 하는 인터페이스를 가진 클래스입니다.
- Adapter: Adaptee의 인터페이스를 Target 인터페이스로 적응시킵니다.
3. 적응자 패턴의 예시
이제 C++를 사용하여 적응자 패턴을 어떻게 구현하는지 살펴보겠습니다. 여기서는 라운드 핀을 가진 전원 플러그를 미국 스타일의 두 핀 플러그로 적응시키는 예제를 사용하겠습니다.
#include <iostream>
// Target
class USPlug {
public:
virtual ~USPlug() = default;
virtual void plugIn() const = 0;
};
// Adaptee
class RoundPlug {
public:
void insert() const {
std::cout << "Round plug is inserted." << std::endl;
}
};
// Adapter
class PlugAdapter : public USPlug {
public:
PlugAdapter(const RoundPlug& roundPlug) : roundPlug(roundPlug) {}
void plugIn() const override {
roundPlug.insert();
}
private:
const RoundPlug& roundPlug;
};
int main() {
RoundPlug roundPlug;
PlugAdapter adapter(roundPlug);
adapter.plugIn(); // Output: Round plug is inserted.
return 0;
}
위의 코드에서 PlugAdapter 클래스는 USPlug 인터페이스를 구현하고, RoundPlug의 인터페이스를 USPlug 인터페이스로 적응시킵니다.
4. 결론
적응자 패턴은 인터페이스가 호환되지 않아 함께 작동할 수 없는 클래스들이 함께 작동하도록 하는 데 유용한 디자인 패턴입니다. 이 패턴을 이해하고 사용하면, 코드의 유연성을 높이고, 기존 코드를 재사용할 수 있습니다.
'CS(Computer Science)지식 > [C++] 디자인 패턴' 카테고리의 다른 글
장식자 패턴(Decorator Pattern) 이해하기 : 쉽게 설명한 디자인 패턴(C++) (0) | 2024.01.28 |
---|---|
복합체 패턴(Composite Pattern) 이해하기 : 쉽게 설명한 디자인 패턴(C++) (0) | 2024.01.28 |
기교 패턴(Bridge Pattern) 이해하기 : 쉽게 설명한 디자인 패턴(C++) (0) | 2024.01.28 |
[C++] GOF의 디자인 패턴 총 정리 (0) | 2024.01.28 |
전략 패턴(Strategy Pattern) 이해하기 : 쉽게 설명한 디자인 패턴(C++) (0) | 2023.07.03 |