博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
策略模式
阅读量:6477 次
发布时间:2019-06-23

本文共 1100 字,大约阅读时间需要 3 分钟。

hot3.png

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);
    }
}

转载于:https://my.oschina.net/goudingcheng/blog/505631

你可能感兴趣的文章
1. Two Sum - Easy - Leetcode解题报告
查看>>
多线程---同步函数的锁是this(转载)
查看>>
鱼C记事本V1.0(下)- 零基础入门学习Delphi28
查看>>
百练 2742 统计字符数 解题报告
查看>>
Ubuntu搜狗输入法候选词乱码
查看>>
js中回调函数写法
查看>>
React native android 最常见的10个问题
查看>>
数据结构和算法
查看>>
.Net 项目代码风格要求
查看>>
[pat]1045 Favorite Color Stripe
查看>>
Immutable学习及 React 中的实践
查看>>
【转】性能测试步骤
查看>>
OSI与TCP/IP各层的结构与功能,都有哪些协议
查看>>
Android实例-程序切换到后台及从后台切换到前台
查看>>
spring boot启动定时任务
查看>>
值类型和引用类型
查看>>
[转]html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
查看>>
maven 常用插件
查看>>
算法 (二分查找算法)
查看>>
java Date 当天时间戳处理
查看>>