什么时候使用不同的类而不是不同的对象?

时间:2017-01-05 01:01:33

标签: python oop design-patterns

我正在制作一个Spyfall游戏,一个所有玩家都在某个位置的游戏,他们的角色取决于他们所在的位置。因此,每个位置都有自己的角色,玩家可以随机接收这些角色。

目前,大约有27个地点,如赌场。赌场有调酒师,赌徒,经销商等角色。

当我创建要在游戏中使用的位置列表时,我应该创建一个通用的位置类:

class Location:
    def __init__(self, name, *roles):
        self.name = name
        self.roles = roles

并使用具有不同参数的构造函数,如

 Location(name="Passenger Airplane", "Economy Class Passenger"...so on
 Location(name="Bank Robbery", "Customer", ...so on

或者我应该创建从Location继承的类并对值进行硬编码:

class Airplane(Location):
    def __init__(self):
        self.name = "Airplane", etc

此外,我想在每个位置添加一个事实列表(例如WWII是在20世纪40年代),而对我来说,将该列表放在构造函数中似乎有点多了。

假设我使用的是类而不是使用构造函数,我应该使用工厂设计模式吗?

2 个答案:

答案 0 :(得分:2)

类应代表程序中的不同对象或功能。如果一个类只与它所包含的数据不同,那么它应该是一个对象。

在您的示例中,如果您的Airplane需要能够飞行,那么功能上与其他Locations不同,并且可以证明使用fly方法创建单独的类。< / p>

答案 1 :(得分:0)

关于继承问题。建议使用组合而不是继承。

请参阅Prefer composition over inheritance?