我坚持尝试在课堂设计中做出决定。这是我需要设计的概述:
我建模的一些东西如下:
class Robot {
// get current location
// place it at given location
}
class Grid {
// Grid is a collection of blocks
Block[][] blocks;
}
class Block {
// each block has it's coordinates,
// has paint status (painted or unpainted),
// and accepts a visitor to determine price to paint
}
class SquareBlock extends Block {
}
class RectangularBlock extends Block {
}
对于发出命令,我将它们建模为Command design pattern
。
问题:
让我感到困惑的是,应该将visited
(又称涂色)块存储在哪个类中(以处理上面的#4和#5)?
我应该将它们存储在Robot
中吗? (我并不认为它属于Robot
,因为它感觉Robot
和paintable block
的概念之间紧密耦合。)
我也不想将其存储在Grid
中,因为同样,我不认为Grid
不需要知道对其采取了什么措施(不是太当然可以)。
我可以将其存储在不同的类中(例如Foo
),但是后来我认为可能是用户可以发出类似where ever Robot is, paint next 2 blocks
的命令。在这种情况下,由于将在PaintCommand
中执行(由CommandPattern处理),因此Foo
将不知道绘制了哪些块。
请让我知道您的想法。