gpt4 book ai didi

c++ - Proxy 是否适合创建演示模式?

转载 作者:太空宇宙 更新时间:2023-11-04 13:09:23 26 4
gpt4 key购买 nike

很多时候我们需要在某些项目中使用演示模式,这些项目通常涉及硬件,目的是软件可以在没有实际连接硬件的情况下运行/模拟。演示模式下的功能在一定程度上模拟了硬件,但并没有明显地在硬件上运行。

我的问题是,代理设计模式(或任何其他设计模式)是否适合在软件中创建演示模式?

考虑以下简化为简短的示例。

class Arm
{
public:
int _x = 0;
int _y = 0;

virtual void move(int x, int y) = 0;
};

class RobotArm : public Arm
{
virtual void move(int x, int y)
{
/* assum we have actual hardware coommands here which updates variables */
//_x = x;
//_y = y;

std::cout << "hardware is not connected, can't move" << std::endl;
}
};

class RobotArmDemo : public Arm
{
virtual void move(int x, int y)
{
/* no hardware commands here, just update variables */
_x = x;
_y = y;

std::cout << "Demo Arm moved to " << _x << "," << _y << std::endl;
}
};

class Robot
{
public:
Arm *leftArm;
Arm *rightArm;
};

int main()
{
Arm * leftArm = new RobotArmDemo; // creating an arm in demo mode!
Arm * rightArm = new RobotArm; // this arm is the real one

Robot * robot = new Robot;

robot->leftArm = leftArm;
robot->rightArm = rightArm;

// perform action
robot->leftArm->move(3, 3); // this is on demo mode
robot->rightArm->move(1, 2); // this is real mode

return 0;
}

在上面的代码中,我为机器人创建了一个演示 ARM 和一个真实 ARM ,只是为了展示每个 ARM 的工作原理。显然在真正的演示模式下,所有派生对象都会有演示实现。这是在软件中实现演示模式的好方法吗?

这可以应用于真正的大/中型应用程序吗?我倾向于喜欢这种方法,因为在真实应用程序和演示应用程序中调用了完全相同的函数,这使生活更轻松并理解了流程。或者,一个单独的“演示”路径几乎可以变成一个单独的应用程序/模块,它会分开并失去与实际应用程序的相似之处。

最佳答案

是的,这看起来是个好方法。

除了设计之外,您还可以考虑创建机器人的抽象工厂类,它创建正确的对象(演示类或真实类)。所以 main 函数的前 5 行将在工厂类中结束。

关于c++ - Proxy 是否适合创建演示模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40642387/

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