我有一些算法,在很多方面非常相似,但都不同。在
我将试着举例说明我的意思。在
假设我有一个机器人类。这个类应该是所有类的“基础”。它提供了使机器人在其环境中工作的基本机制。它可能需要也可能不需要自己工作(我的意思是,它可以是一个抽象类,它本身是无用的,或者如果可能的话,有基本的机制来准备工作)。在
所有的机器人都有手。但有些机器人会有像人一样的手,另一些会有刀片,还有一些会有剃须刀。我可以创建一个名为RobotBase的基类,然后创建RobotHumandHand、RobotBladeHand和robotrazerhand。但是他们也可以有不同的头,不同的眼睛,不同的腿,不同的手臂等等。有什么简单的方法可以解决这个问题吗?我想用一种有点像乐高的方式来描述这个,所以我可以定义一个机器人,然后“添加”我想要的部件。也许通过接口?我甚至不知道这些是否存在于python中(这是我将要使用的语言)。在
如有任何意见/建议,我们将不胜感激!谢谢!在
对于这样的问题,我可能会采用的设计模式是:Dependency Injection以及与之配套的框架、复合模式和构建器模式。它们基本上应该让你把机器人的创造和使用分开。在
如果你正在寻找一个设计模式,那么我建议你的策略模式。因为实现这种模式,您可以动态地交换robot的组件。在
我认为你的机器人应该有一个端口列表,也就是说,每个机器人可能有一些注入的组件。您的}的实现。反过来,
Robot
类将是RobotPart
s的容器。您可以使用特定的部分来具有特定的接口。RobotHand
扩展了RobotPart
,并且Robot
类有一个包含RobotHand
实现列表的字段(您可以将其限制为2只手,但在一般情况下可能会有更多)。您可以对从RobotPart
继承的RobotHead
执行相同的操作,并且在Robot
类中还有一个字段保存{RobotHead
可能包含RobotEye
实现的列表,等等。然后,您的特定Robot
实现可以从基类继承它们的行为,或者利用配置,例如使用RobotBladeHand
s(如果可用)。在相关问题 更多 >
编程相关推荐