这个问题让我想起了迷你游戏Doodle God。有几个物体,其中一些可以相互作用并形成新的物体。每个物体都是自己的类:水、火、空气等,它们都继承自同一个基类。例如,水和火可以结合形成灰烬对象,这些对象可以用于新的组合。
问题在于找出一种优雅的方式来处理所有可能的组合。最明显但可怕难以维护的解决方案是创建一个函数,它以任何两个对象作为参数,并使用一个巨大的switch块来比较类型名称并确定这两个对象相互作用时应返回哪种对象(如果有的话)。同时,combine(a, b) 应始终等于 combine(b, a)。
对于这种情况,什么样的设计既易于维护又高效呢?
问题在于找出一种优雅的方式来处理所有可能的组合。最明显但可怕难以维护的解决方案是创建一个函数,它以任何两个对象作为参数,并使用一个巨大的switch块来比较类型名称并确定这两个对象相互作用时应返回哪种对象(如果有的话)。同时,combine(a, b) 应始终等于 combine(b, a)。
对于这种情况,什么样的设计既易于维护又高效呢?