文档章节

策略模式

泡海椒
 泡海椒
发布于 2015/09/13 21:10
字数 268
阅读 2
收藏 0

Strategy模式也叫策略模式是行为模式之一,它对一系列的算法加以封装,为所有算法定义一
个抽象的算法接口,并通过继承该抽象算法接口对所有的算法加以封装和实现,具体的算法选择
交由客户端决定(策略)。Strategy模式主要用来平滑地处理算法的切换 。
Strategy:策略(算法)抽象
package com.org.strategy;
public interface Strategy {
    public double cost(double num);
}
ConcreteStrategy:各种策略(算法)的具体实现。
package com.org.strategy;

public class StrategyA implements Strategy{
    public double cost(double num) {
        return num * 0.8;
    }

}
package com.org.strategy;

public class StrategyB implements Strategy {

    public double cost(double num) {
        if(num >= 200) {
            return num - 50;
        }
        return num;
    }

}


Context:策略的外部封装类,或者说策略的容器类。根据不同策略执行不同的行为。策略由外部环境决定。
package com.org.strategy;

public class Context {
    private Strategy strategy;
    
    public Context(Strategy strategy) {
        this.strategy = strategy;
    }
    
    public double cost(double num){
        return this.strategy.cost(num);
    }
    
}
客户端代码:
package com.org.strategy;

public class MainClass {
    public static void main(String[] args) {
        double num = 200;
        Context context = new Context(new StrategyB());
        double newNum = context.cost(num);
        System.out.println("price" + newNum);
    }
}

© 著作权归作者所有

共有 人打赏支持
上一篇: 建造者模式
下一篇: 修改mysql密码
泡海椒
粉丝 11
博文 282
码字总数 288344
作品 0
成都
程序员
私信 提问

暂无文章

Go Timer实现原理剖析

简介 快速使用 操作介绍

恋恋美食
19分钟前
2
0
记录一个奇怪的问题

环境:jdk1.8虚拟机参数:-verbose:gc -XX:+PrintGCDetails -Xmx20m -Xms20m -Xmn10m -XX:SurvivorRatio=8  -XX:+HeapDumpOnOutOfMemoryError 可以看出,eden占8M却放不下6M数据,发生了......

暗中观察
47分钟前
2
0
【git搭建】创建多个git账号

实习开发中我们可能一个机子上配置多个git账号,如github.com,oschina.com 或者工作账号,私人账号,这时候就2个账号用一个key,肯定会冲突,有一个会提示没权限(账号和密码对应不上) ssh ...

echojson
49分钟前
2
0
rabbitmq安装教程

RabbitMQ有Windows与Linux版本的,这里先写Windows版本的安装。 以前安装软件总是在百度上找某某安装教程,结果能按照教程安装好的软件真的不多。想起先前以为大牛说的一句话,去官网按照官网...

em_aaron
今天
7
0
Android 贝塞尔曲线实践——波浪式运动

一、波浪效果如下 贝塞尔曲线自定义波浪效果的案例很多,同样方法也很简单,大多数和本案例一样使用二次贝塞尔曲线实现,同样还有一种是PathMeasure的方式,这里我们后续补充,先来看贝塞尔曲...

IamOkay
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部