赞
踩
在软件开发中常常遇到这种情况,实现某一个功能有多种算法或者策略,我们可以根据应用场景的不同选择不同的算法或者策略来完成该功能。把一个类(A)中经常改变或者将来可能改变的部分提取出来,作为一个接口(B),然后在类(A)中包含这个接口(B),这样类(A)的实例在运行时就可以随意调用实现了这个接口的类©的行为。比如定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换,使得算法可独立于使用它的客户而变化。这就是策略模式。
策略模式体现了面向对象程序设计中非常重要的两个原则:
优点
缺点
运行环境类:Strategy
这个策略模式运行的环境,其实也就是在哪里使用
应用场景类:Person
这个就是客户端访问的类,也就是该类的对象所持有的策略
具体策略类:Car
具体实现策略类
抽象策略类:CarFunction
根据不同的需求,产生不同的策略或算法的接口
1.抽象策略类:CarFunction
package com.design.strategy;
/**
* @ClassName : CarFunction
* @Description : 策略类
*
*/
public interface CarFunction {
void run(); //每辆车有不同的行驶方法
}
2.具体策略父类
package com.design.strategy;
/**
*
* @ClassName : Car
* @Description : 每个车都具有的相同的属性和行为
*
*/
public class Car implements CarFunction {
protected String name; //车名字
protected String color; //车颜色
private CarFunction carFunction
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。