gpt4 book ai didi

c++ - 适配器模式的实现问题

转载 作者:行者123 更新时间:2023-12-02 10:14:43 24 4
gpt4 key购买 nike

我有一个问题 - 如何在以下示例中使用适配器模式将第一个接口(interface)“转换”为另一个接口(interface)?如果第二个接口(interface)使用附加参数,我不能使用这个参数,如果适配器继承自第一个接口(interface)(它只有一个参数)。我该怎么办?

#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");
}

最佳答案

您试图在 interface1 和 interface2 之间放置一个适配器,以便您可以通过适配器使用 interface2。

您必须决定如何处理您需要适应的方法需要比 interface2 更多的参数这一事实。

一种解决方案可能是始终使用已知值作为参数(空字符串、经过验证的字符串等)。

另一种解决方案可能是将该字符串传递给适配器构造函数

另一种解决方案可能是每次需要确定该值时询问一个函数。

这真的取决于你需要适应什么。

关于c++ - 适配器模式的实现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62350410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com