策略模式

策略模式: 定义了算法族, 分别分别封装起来, 让其之间可以相互替换------>设计原则: 多用组合,少用继承

Example: 一个简单的模拟鸭子应用--->不同的鸭子有不同叫声, 飞行方式啊等等; 

  1.利用继承实现: 建一个鸭子的基类, 包含一些基本方法---->具体的鸭子继承这个基类. 然后再去重写实现方法;

    缺点: 当鸭子具有新的类型行为时, 比如有的鸭子要具有 飞天遁地的功能, 然后你在父类添上这么一个功能, 接下来就恐怖了, 你需要重写每个鸭子继承的

        该行为, 非常恐怖;

  2.当然, 你也可以将这些行为都写成不同的接口, 哪个鸭子有哪些具体的行为,就实现哪个接口; 除了继承一个简单的基类外, 实现不同的行为接口,实现不同的鸭子      行为;

    缺点: 接口是没有代码实现的, 不利于代码复用,要是大家都是同一种行为, 岂不是要重复写很多遍代码;

  3. 利用组合: 将变化的这些行为剥离出来,形成单独的接口, 然后呢具体行为去实现这些接口--->而我们在鸭子对象中Has A一个该行为对象, 通过该对象实现行为. setBehavior可以在不同条件下配置不同的行为;

    

 

posted @ 2019-05-04 23:17  Noino  阅读(123)  评论(0)    收藏  举报