策略模式(Strategy)

来源:互联网 发布:梦龙网络计划软件图解 编辑:程序博客网 时间:2024/06/09 16:30
/**
 * 策略模式:对象的行为模式
 * 针对一组算法,将每一组算法封装到具有共同接口的独立的类中,从而使得他们可以相互替换
 * 特点:
 * 抽象策略角色:通常用一个抽象类或者接口来实现,主要是定义这个算法所完成的功能
 *    具体策略角色:包装了相关算法和行为
 *      环境角色:持有策略类的引用
 * 优点:提供管理相关算法族的办法,提供可替代继承关系的办法
 *        避免了使用多重条件判断语句
 * 缺点: 客户端必须知道所有的策略类,自己去决定使用那一个 造成很策略类

 */


/**
 * 抽象策略类 ---待实现的方法
 * @author Rain
 */
public interface Calculate {
int calculate(int a,int b);
}

/**
 * 加法策略类 ---具体策略类
 * @author Rain
 */
public class AddCaculate implements Calculate{
@Override
public int calculate(int a, int b) {
return a+b;
}
}

/**
 * 除法策略类 ---具体策略类
 * @author Rain
 */
public class DivideCaculate implements Calculate{
@Override
public int calculate(int a, int b) {
return a/b;
}
}

/**
 * 环境
 * @author Rain
 */
public class CalculateContext {
private Calculate calculate;

/**
* 构造方法赋值
* @param calculate
*/
public CalculateContext(Calculate calculate) {
this.calculate=calculate;
}

/**
* 获得策略对象
*/
public Calculate getCaculate(){
return calculate;
}

/**
* 环境角色的接口方法,具体结果依赖于策略引用指向具体的策略对象
*/
public int calcuate(int a,int b){
return calculate.calculate(a, b);
}
}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 税率是6%开成3%怎么办 医院收费收错了怎么办 发票少打一个字怎么办 增值税发票抬头错了一个字怎么办 暂估入账跨年了怎么办 电子发票写错了怎么办 发票纳税人识别号写错了怎么办 电子发票忘填邮箱怎么办 公司名跟发票抬头不一样怎么办 买空调不给发票怎么办 卖苹果手机没有发票怎么办 刷机字库刷坏了怎么办 维棠不能播放视频怎么办 m3u8卡顿的厉害怎么办 下载了PDF不能用怎么办 pdf格式在电脑打不开怎么办 电脑上arm格式打不开怎么办 极米桌面无响应怎么办 jpg格式的文件打印模糊怎么办 苹果迅雷mp4格式看不了怎么办 太阳镜镜片磨花了怎么办 ∪盘插上电脑读不出怎么办 网站被路由器屏蔽了怎么办 电脑无法进入路由器设置页面怎么办 笔记本电脑无线网卡坏了怎么办 笔记本内置无线网卡坏了怎么办 笔记本无线网卡坏了怎么办 wif连上不能上网怎么办 手机wifi有个感叹号怎么办 分手不删qq微信怎么办 优盘提示被锁了怎么办 电视无线网卡插上没反应怎么办 光猫没有wan口怎么办 usb无线网卡坏了怎么办 wifi接收器电脑不识别怎么办 无线路由接收器识别不了怎么办 小米3一直闪红灯怎么办 手机拨号键删了怎么办 联想笔记本电脑无线网卡坏了怎么办 联想z360内置无线网卡坏怎么办 usb无线网卡驱动安装失败怎么办