我正在尝试实施简单的纸牌游戏。
现在让我们假设我们有一个名为SourceCardDeck
的类,它代表卡片的来源。此类可以弹出一张卡,但它没有能力推回卡(这是所需,因为用户不能够存储卡在源甲板上。)
但现在我想实现撤消操作!
如果没有任何方法推回卡,我怎么能这样做?我听说过Command模式,但它只适用于反向方法。关于卡及其出现的能力呢?卡有调低的方法吗?用户通常无法再次关闭卡。但是在撤消中需要它。
如何使这种方式干净利落?
答案 0 :(得分:1)
一个相当广泛的问题,因此是一个广泛的答案,意味着让你前进:基本上你在问:我怎样才能以与该对象的公共API冲突的方式“恢复”对象的状态?
这里有两个选项:
这两种方法都有其优点和缺点;因为这是你的项目,所以我会讨论这些方面并将决定作为练习给读者。
最后:卡不应该知道被拒绝或注意。 卡只是一张卡片。想想你正在尝试建模的真实世界域。纸牌游戏中的牌不会改变一点。它总是只是一块纸板上印有东西。它没有状态。唯一具有状态的东西:包含卡片对象的各种堆。