다중 상속(multiple inheritance)은 C++에서 객체들 간에 관계를 구축하는 강력한 방법 중 하나입니다. 이번에는 다중 상속을 활용하여 객체의 어댑터 패턴(Adapter Pattern)을 적용하는 방법에 대해 알아보겠습니다.
어댑터 패턴이란?
어댑터 패턴은 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환하는 패턴입니다. 즉, 호환되지 않는 인터페이스를 가진 두 객체를 함께 동작할 수 있게 만들어주는 패턴입니다.
어댑터 패턴은 기존에 구현된 클래스나 라이브러리를 수정하지 않고 새로운 인터페이스에 맞춰서 재활용할 수 있도록 해줍니다.
다중 상속을 통한 어댑터 패턴 구현
어댑터 패턴을 구현하기 위해, C++에서 다중 상속을 활용할 수 있습니다. 다중 상속을 통해 어댑터 클래스가 여러 개의 클래스로부터 행동이나 인터페이스를 상속받을 수 있게 됩니다.
다음은 다중 상속을 이용한 어댑터 패턴의 간단한 예제 코드입니다.
class Target {
public:
virtual void request() = 0;
// 다른 인터페이스의 메소드
};
class Adaptee {
public:
void specificRequest() {
// 기존에 구현된 다른 인터페이스의 메소드
}
};
class Adapter : public Target, public Adaptee {
public:
void request() override {
specificRequest();
// 다른 인터페이스로 변환하는 작업
}
// 다른 인터페이스의 메소드를 구현
};
int main() {
Adapter adapter;
adapter.request(); // 새로운 인터페이스로 호출
return 0;
}
위 코드에서 Adapter
클래스는 Target
과 Adaptee
클래스로부터 상속을 받아서 새로운 인터페이스를 제공하고 있습니다.
마무리
다중 상속을 통한 어댑터 패턴을 적용하면 기존의 인터페이스를 수정하지 않고 새로운 인터페이스를 제공하는 것이 가능해집니다. 이를 통해 코드의 재활용성을 높이고 유연한 구조를 갖출 수 있습니다.
어댑터 패턴은 다른 패턴과 조합하여 유용하게 사용될 수 있는데, 특히 다양한 라이브러리나 시스템 간의 호환성을 유지하면서 새로운 기능을 추가할 때 유용하게 활용될 수 있습니다.
파생된 클래스는 동일한 기본 클래스를 여러 번 포함할 수 있기 때문에, 클래스 간의 중복을 최소화하면서 유연한 디자인을 갖출 수 있습니다.
참고 자료
- GeeksforGeeks: Adapter Design Pattern
- Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma et al.
이상으로, 다중 상속을 활용한 어댑터 패턴 적용에 대해 알아보았습니다. 코드를 통해 실제 동작을 확인해보실 수 있습니다.