设计模式帮助

2024-05-02 12:42:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些算法,在很多方面非常相似,但都不同。在

我将试着举例说明我的意思。在

假设我有一个机器人类。这个类应该是所有类的“基础”。它提供了使机器人在其环境中工作的基本机制。它可能需要也可能不需要自己工作(我的意思是,它可以是一个抽象类,它本身是无用的,或者如果可能的话,有基本的机制来准备工作)。在

所有的机器人都有手。但有些机器人会有像人一样的手,另一些会有刀片,还有一些会有剃须刀。我可以创建一个名为RobotBase的基类,然后创建RobotHumandHand、RobotBladeHand和robotrazerhand。但是他们也可以有不同的头,不同的眼睛,不同的腿,不同的手臂等等。有什么简单的方法可以解决这个问题吗?我想用一种有点像乐高的方式来描述这个,所以我可以定义一个机器人,然后“添加”我想要的部件。也许通过接口?我甚至不知道这些是否存在于python中(这是我将要使用的语言)。在

如有任何意见/建议,我们将不胜感激!谢谢!在


Tags: 算法机器机器人抽象类人类基类基础机制
3条回答

对于这样的问题,我可能会采用的设计模式是:Dependency Injection以及与之配套的框架、复合模式和构建器模式。它们基本上应该让你把机器人的创造和使用分开。在

如果你正在寻找一个设计模式,那么我建议你的策略模式。因为实现这种模式,您可以动态地交换robot的组件。在

我认为你的机器人应该有一个端口列表,也就是说,每个机器人可能有一些注入的组件。您的Robot类将是RobotParts的容器。您可以使用特定的部分来具有特定的接口。RobotHand扩展了RobotPart,并且Robot类有一个包含RobotHand实现列表的字段(您可以将其限制为2只手,但在一般情况下可能会有更多)。您可以对从RobotPart继承的RobotHead执行相同的操作,并且在Robot类中还有一个字段保存{}的实现。反过来,RobotHead可能包含RobotEye实现的列表,等等。然后,您的特定Robot实现可以从基类继承它们的行为,或者利用配置,例如使用RobotBladeHands(如果可用)。在

相关问题 更多 >