案例分析:设计模式与代码的结构特性
一. 什么是策略模式 这里引用百度百科的定义。策略模式是指有一定行动内容的相对稳定的策略名称。策略模式在古代中又称“计策”,简称“计”,如《汉书·高帝纪上》:“汉王从其计”。这里的“计”指的就是计谋、策略。策略模式具有相对稳定的形式,如“避实就虚”、“出奇制胜”等。一定的策略模式,既可应用于战略决策,也可应用于战术决策;既可实施于大系统的全局性行动,也可实施于大系统的局部性行动。 二. 策略模式的优缺点 无论哪种模式都有其优缺点,当然我们每次在编写代码的时候需要考虑下其利弊。 策略模式的优点: 1. 提供了快速替换继承关系的办法:案例中的我们能快速的替换僵尸类,速度,攻击类型。 2. 减少代码中的if else 等判断语句:我们在更换攻击状态的时候不用去判断,当达到某个条件时直接切换攻击实现类就可以了。比如上文中的普通攻击变超级攻击。 3. 实现的选择:策略模式可以提供不同的实现。 策略模式的缺点: 1. 策略模式会造成很多策略类:上文中的所有速度实现类,攻击实现类…… 2. 通讯开销很大:比如我们上面的速度接口的speed需要传递3个参数。这三个参数对有的僵尸类是有意义的,对大部分僵尸无意义,这时候就会造成没必要的通讯开销。 3. 必须自行知道所有的实现类有何不同?每次新建一个僵尸类的时候必须要知道所有的速度类及攻击实现类的不同。此时这些就会暴露出具体的实现问题