时间限制:1秒空间限制:32768K热度指数:5105
知识点:策略设计模式
策略设计模式定义:定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的的变化独立于使用算法的客户。 其实策略模式就是把变化的行为抽取出来,形成单独的类,然后把这些行为抽取出一个接口出来,这样做的目的是可复用,然后在你所要用到行为的地方新建一个行为类型的接口变量,你想要什么具体的行为直接new出来接口对应的实现类就行。 策略者模式用到了哪些设计原则?
1、多用组合、少用继承。这句话中的“组合”的意思就像上面的那些作战行为都封装成一个独立的类,然后组合在一起。继承在这个例子中并没有体现出来。
2、针对接口编程、而不是针对实现编程。 这个其实就是为了用多态。
3、找出应用中可能需要变化的地方,把它们独立出来,不要和那些不需要改变的代码混在一起。 其实我们平常的代码中,没有那么复杂,只需要将其中变化的部分给抽取出来,达到复用的目的就行了,这种策略模式一般都是在那种比较复杂的情况下,就将其按照上面标准的结构给实现下来。
策略模式的定义:
1、策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
也个定义,通俗的讲,也就是将那些使用的方法风别封装成独立的类,然后将这一类使用接口统一管理起来,让需要使用这些方法的用户能够随时调用他们。上面例子中的战斗行为就相当于定义中的算法一词。只是算了个说法而已。
缺点:
1、客户端必须知道所有的策略类,并自行决定使用哪一个策略类。这就意味着客户端必须理解这些算法的区别,以便适时选择恰当的算法类。换言之,策略模式只适用于客户端知道算法或行为的情况。
2、由于策略模式把每个具体的策略实现都单独封装成为类,如果备选的策略很多的话,那么这些类的数目就非常多了。