对于python爱好项目,我需要一个由单元组成的网格,如:
为此,我创建了一个通用的Grid类,其中包含一般的Cell对象列表。两者都有子类,因为我需要不同类型的网格,每个网格包含不同类型的单元格。就像在这个类图中一样:
我实现了通用的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子类的构造函数不能有其他参数,但这对我的情况来说不是问题)。
我是否忽略了处理这种情况的一些明显的设计模式?我做了一些研究,但我找不到任何合适的其他解决方案。