这样的概念很简单, 确是每个设计模式背后的灵魂所在. 到目前为止, 设计中不断在变的是 Attack 这个接口, 更准确的应该是 Attack 这个行为. 面向接口这个概念没有问题, 是大多数人把语言层面和设计层面的接口含义没搞明白, 真正的面向接口编程更偏向于面向架构中行为的编程, 另外一个角度也可以看做是利用 OO 的多态原则.
说到这里, 我们可以更系统的给 Attack 行为定义成一类行为, 而具体的行为实现可以描述为一簇算法. 想想看, Attack 行为其实不止作用于 player 的类型, 改日产品经理新加一个 XX 对象也具有攻击行为, 理想的情况是我只需要让这个 xx 对象有 Attack 行为即可, 而不需要改动以前的任何代码. 你现在是不是对这个行为的定义理解的更深刻一些.
另外一点, 到目前为止 YY 妹子的代码中一直是以继承的方式来实现行为, 这会有什么问题呢? 假如要想在程序运行时动态修改 player 的 Attack 行为, 会显得力不从心了.
谈到这里又引入了其他一个设计理念: 一般情况下, 有一个可能比是一个更好. 具体概念为: 多用组合, 少用继承. 继承通常情况下适用于事物本身的一些特性, 比如: 玩家基类具有姓名这个属性, 继承类完全可以继承这个属性, 不会发生任何问题. 而组合多用于行为的设计方面, 因为这个行为类型, 我可能会在多个事物中出现, 用组合能实现更大的弹性设计
来源: https://www.cnblogs.com/zhanlang/p/10473101.html