【发布时间】:2020-06-12 18:32:35
【问题描述】:
我有一个问题 - 如何在以下示例中使用适配器模式将第一个接口“转换”为另一个接口?如果第二个接口使用附加参数,我不能使用这个参数,如果适配器继承自第一个接口(它只有一个参数)。我该怎么办?
#include <iostream>
class IFirstClass
{
public:
virtual void perform(std::string name) = 0;
};
class ISecondClass
{
public:
virtual void furtherPerform(std::string name, std::string desc) = 0;
};
class FirstClass : public IFirstClass
{
public:
virtual void perform(std::string name)
{
std::cout << "Performing action: " << name << "\n";
}
};
class SecondClass : public ISecondClass
{
public:
virtual void furtherPerform(std::string name, std::string desc)
{
std::cout << "Performing action: " << name << " with description: " << desc << "\n";
}
};
class Adapter : public IFirstClass
{
private:
SecondClass& derived;
public:
Adapter(SecondClass& derived) : derived{ derived }
{
}
virtual void perform(std::string name)
{
derived.furtherPerform(name, ? );
}
};
int main()
{
FirstClass a;
SecondClass b;
Adapter c(b);
c.perform("Name", "Description");
}
【问题讨论】: