看了这个策略模式,学习到了3个设计原则:
@封装变化。即首先要区分出一个对象不变与 变化的地方,把变化的部分提取出来,另起封装
@面向接口编码,而不是面向实现编码。
面向实现编码的话 代码复用性不好,即不要在每个具体子类中实现继承或者实现接口的方法里 去 写实现编码,这样的话假如这个实现编码有几个子类都一样,那每个子类都可能要写相同的实现
@多用组合,少用继承。 继承有着它的总多弊端,诸如上边说的代码复用性,以及 代码不够灵活,不能够在运行时动态灵活改变。而用组合的话就可以增加运行时的动态灵活性,比如可以通过属性的set方法,在运行时(不是说jvm开始java class类的运行时),而是在编码过后,通过set方法,在需要的业务中实时去控制代码的运行逻辑。