java设计模式之策略模式总结
策略模式的定义:(定义截自http://www.cnblogs.com/whgk/p/6087064.html)
1、策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户
换句话讲,也就是将那些使用的方法分别封装成独立的类,然后将这一类使用接口统一管理起来,让需要使用这些方法的用户能够随时调用它们。上面例子中的战斗行为就相当于定义中的算法一词。只是换了个说法而已。
缺点:
1、客户端必须知道所有的策略类,并自行决定使用哪一个策略类。这就意味着客户端必须理解这些算法的区别,以便适时选择恰当的算法类。换言之,策略模式只适用于客户端知道算法或行为的情况。
2、由于策略模式把每个具体的策略实现都单独封装成为类,如果备选的策略很多的话,那么这些类的数目就非常多了。
从代码角度去认识策略模式:
(赵云用三个妙计解决问题,这个场景中的要素有三个:三个妙计,一个锦囊,一个赵云)
1.首先创建一个策略接口(包含一个每个锦囊都可以执行的算法)
2.然后写三个实现类,因为有三个妙计
3.那么计谋有了,需要一个锦囊来存放三个妙计
4.主人公赵云出场,一次打开妙计
(自学所用,勿喷)