2 策略模式
来源:互联网 发布:微波炉选购 知乎 编辑:程序博客网 时间:2024/06/08 15:56
策略模式:他定义了算法家族,分别封装亲爱,让他们之间可以互相替换,次模式让算法的变化,不会影响到使用算法的客户。
Strategy类:定义定义所有支持的算法的公共接口
ConcreteA(BC):具体的策略类,封装了具体的算法或行为
Context:上下文用一个ConcreteStrategy来维护一个Strategy对象的引用
public class StrategyTest {
public static void main(String[] args){
Strategy discount = new Discount();
Strategy addMon = new AddMoney();
Context context = new Context(discount);
Context context1 = new Context(addMon);
context.getMoney(100);
context1.getMoney(100);
}
}
abstract class Strategy{
public abstract void discount(double money);
}
class Discount extends Strategy{
@Override
public void discount(double money) {
System.out.println("打折方法 原价:"+money+" 折扣价:"+money*0.8);
}
}
class AddMoney extends Strategy{
@Override
public void discount(double money) {
System.out.println("返现方法 原价:"+money+"返现价:"+money*0.1);
}
}
class Context{
private Strategy strategy;
public Context(Strategy strategy) {
this.strategy = strategy;
}
public void getMoney(double money){
strategy.discount(money);
}
}
策略模式是一种定义一系列算法的方法,从概念上来看,所有算法完成的都是相同的工作,只是实现不同,他可以以相同的方式调用所有的算法。
策略模式的重心
策略模式的重心不是如何实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活,具有更好的维护性和扩展性。
算法的平等性
策略模式的最大特点就是策略算法的平等。策略算法是相同行为的不同实现。
优点:
1. 算法是相互独立的,相互之间没有依赖。
运行时策略的唯一性:同时只能使用一个策略
策略模式的优点
1. 提供了管理相关算法族的办法,可以将共有代码一刀平父类里面从而避免代码重复
2. 使用策略模式可以避免多重条件if-else语句,如果不用策略模式用一堆ifelse来判断不同算法实在很低效
3. 可以动态的改变对象的行为
策略模式的缺点:
1. 策略模式只适用于客户端知道算法或行为的情况
2. 策略模式把每个策略实现都单独封装成为类,如果备选策略很多的话,对象的数目比较客观
0 0
- 策略模式 - 2
- 读书笔记2:策略模式
- 策略模式(Strategy) 2
- 策略模式2
- 2 策略模式
- 2、策略模式
- 读书笔记2:策略模式
- 策略模式学习2
- 设计模式:2策略模式
- 设计模式【2】:策略模式
- 第2章 策略模式
- 研磨设计模式之策略模式-2
- 设计模式(策略模式2)
- 设计模式之我见--2 策略模式
- 研磨设计模式之 策略模式-2
- 研磨设计模式之 策略模式-2
- 大话设计模式2 策略模式
- 【Java设计模式】(2)策略模式Strategy
- Eclipse导出JavaDoc中文乱码问题解决
- 图解数据结构(9)——左偏树
- #winhec# 开发人员刷屏看点 (视频)
- mvc中封装的函数库-了解原理
- Maven
- 2 策略模式
- memcached的基础
- 用户体验:登陆界面密码显示与隐藏的再思考!
- stl vector排序
- 费式数列
- Linux网络编程--2. 初等网络函数介绍(TCP)
- vs 中大括号之间垂直虚线显示
- C++遍历目录
- cocos2dx menu思考 (1)