1. 对于一个超类来说,所有的派生类都将继承它的共有特性。但是如果对于某个派生类来说,继承基类的某个特征是不合适,那么可以用空函数来覆盖。
如果每次新的需求一来,都会使某方面的代码发生变化,那么你就可以确定,这部分代码需要被抽出来,和其他的稳定代码有所区别。
把会变化的部分取出并“封装”起来,好让其他部分不会受到影响。
2. 针对接口编程,而不是针对实现编程。“针对接口编程”的真正意思是“针对超类型(supertype)编程”。
3. 多用组合,少用继承。这增大了系统的弹性,使某种特性变化起来更加方便。
以上便是策略模式。
策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。