是否有一个Grid类的python设计模式可以包含不同类型的Cell类?

时间:2017-12-18 20:36:07

标签: python design-patterns

对于python爱好项目,我需要一个由单元组成的网格,如:

Grid consisting of cells

为此,我创建了一个通用的Grid类,其中包含一般的Cell对象列表。两者都有子类,因为我需要不同类型的网格,每个网格包含不同类型的单元格。就像在这个类图中一样:

Class diagram

我实现了通用的Grid和Cell类,如下所示:

class Cell:
    def __init__(self, row_index, column_index):
        self.row_index = row_index
        self.column_index = column_index

class Grid:
    def __init__(self, size, cell):
       self.cells = [cell(i, j) for i in range(size) for j in range(size)]

cell构造函数的Grid参数指定用于构建此网格的单元格类型。然后,一个特定的子类看起来如下:

class CellS(Cell):
    def __init__(self, row_index, column_index):
        super().__init__(row_index, column_index)
        # other stuff

class GridA(Grid):
    def __init__(self):
        super().__init__(9, CellS)

它工作正常,但感觉有点奇怪(并且它的缺点是Cell子类的构造函数不能有其他参数,但这对我的情况来说不是问题)。

我是否忽略了处理这种情况的一些明显的设计模式?我做了一些研究,但我找不到任何合适的其他解决方案。

0 个答案:

没有答案