策略模式
   
定义了算法族，分别封装起来，让它们之间可以互相替换，此模式让算法的变化独立于使用算法的客户。（示例：模拟鸭子应用。开源框架应用：Spring
资源访问的Resource策略接口）

设计原则
    1，封装变化 —— 把会变化的部分取出并“封装”起来，好让其他部分不会受到影响。
    2，多用组合，少用继承 ——
使用组合建立的系统具有很大的弹性，不仅可将算法族封装成类，更可以“在运行时动态地改变行为”。（“有一个”关系，好将动作“委托”别人处理。）
    3，针对接口编程，不针对实现编程 —— 利用多态，在运行时才指定具体实现的对象。（“行为”接口）