我可能会遇到这样一个问题的设计模式是: 依赖注入 和它一起使用的框架,Composite模式和Builder模式。它们基本上应该让您将机器人的创建与其使用分开。
如果您正在寻找设计模式,那么我建议您使用策略模式。因为实现此模式,您可以动态地交换机器人的组件。
我认为你的机器人应该有一个端口列表,即每个机器人可能拥有的一些注入组件。您的 Robot class将是一个容器 RobotPart 秒。您可以使特定部件具有特定接口。 RobotHand 扩展 RobotPart 和 Robot class有一个包含列表的字段 RobotHand 实现(你可以将它限制为2手,但一般情况下可能会有更多)。你也可以这样做 RobotHead 将继承自 RobotPart 而且还会有一个领域 Robot 班级执行 RobotHead 。轮到时 RobotHead 可能会有一份清单 RobotEye 实现等等。然后你的具体 Robot 实现可以从基类继承它们的行为或利用配置,例如通过使用 RobotBladeHand s如果可用的话。
Robot
RobotPart
RobotHand
RobotHead
RobotEye
RobotBladeHand
我不是Python人,但快速浏览表明它们支持多重继承,可以像Java接口一样使用(Python似乎不支持接口)。所以你可以拥有RobotHand和RobotHumanHand,RobotBladeHand等基本上的超类,与你的眼睛和脚相同。这是做你想做的事情的合理方式。