假设以下为产品狗一个月之后的新需求:
1. 能跳跃的等级调整为 11 级
2. 玩家添加能遁地的行为
3. 新加了 10 种玩家类型
如果你读到了这里, 说明大家都是对于设计追求卓越的技术人. 这里菜菜再强调一遍架构设计的一项重要原则
类应该对修改关闭, 对扩展开放.
这里需要强调一点, 设计的每个部分想要都遵循开放 - 关闭原则, 通常很难做到. 因为要想在不修改现有代码的情况下, 你需要花费许多时间和精力. 遵循开放关闭原则, 通常需要引入更多的抽象, 增加更多的层次, 增大代码的复杂度. 因此菜菜建议把注意力集中在业务中最有可能变化的点上, 这些地方应用开放关闭原则. 至于怎么确定哪些是变化的点, 这需要对业务领域很强的理解和经验了.
现在我们分析一下我们要做的事情, 我们希望一个对象 (player) 在不改动的情况下动态的给它赋予新的行为, 在业务上实现的功能和用继承的结果类似. 总之一句话:
现有的类型优雅的添加新行为, 并且可以灵活叠加和替换
理想中的设计图大致如下:
来源: https://www.cnblogs.com/zhanlang/p/10502051.html