我的项目包括创建一个FreeCell游戏 - 使用HTML 5 Canvas和JavaScript。我目前有一个部分工作的游戏,但代码开始变得非常混乱。
因此,我开始重构它,并确定了一些我可以集中在对象中的行为。我有一个名为 CardContainer 的界面,它在游戏中保存卡片,实现它的类是 FreeCell , HomeCell 和 Stack < / strong>,它们是临时单元格,堆栈(我把卡片放在游戏中),以及初始堆栈(我在游戏中使用卡片的地方)。
此界面上的两个相关方法是:
pop(quantity: Integer): Card[]
Stack 内部有一张或多张卡片,而其他卡片只有一张卡片。
move
堆叠它会返回数量数量的卡片,但对于其他卡片,它会返回一张卡片。
我发现我的设计错误,因为我的界面的某些客户端会忽略 pop 方法中的数量参数。另一方面,如果我改变这个接口以获得更一致的东西(例如,根据客户端有或没有参数),我将介绍一个向下传播的代码气味,我总是在这里检查客户端的类型。
首先,我不知道如何用更通用的术语来表达这个问题。
如何解决此设计同时为不必要的客户端删除参数并避免向下转换?
修改
我有一个{{1}}方法,它接收共享接口 CardContainer 的源和目标。