策略模式
来源:互联网 发布:智联招聘 知乎 编辑:程序博客网 时间:2024/04/29 21:36
策略模式属于对象的行为模式,其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响客户端的情况下发生变化。
策略模式中有三种角色:
抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现,此角色给出所有的具体策略类所需的接口。
具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。
环境(Context)角色:持有一个Strategy类的引用。
以下是代码示例:
package strategy;
public abstract class Strategy ...{
public abstract void func();
}
package strategy;
public class ConcreteStrategy extends Strategy ...{
public void func() ...{
System.out.println(this + ".func()");
}
}
package strategy;
public class Context ...{
private Strategy strategy;
public void strategyFunc() ...{
strategy.func();
}
}
public abstract class Strategy ...{
public abstract void func();
}
package strategy;
public class ConcreteStrategy extends Strategy ...{
public void func() ...{
System.out.println(this + ".func()");
}
}
package strategy;
public class Context ...{
private Strategy strategy;
public void strategyFunc() ...{
strategy.func();
}
}
上面的示例中没有“使用者”角色,因为策略模式的使用情景可能各不相同,并没有统一的模型。
我从没有意识到“策略模式”是一种特别的模式,只认为这是面向对象的一种基本设计方法,在我所参考的资料中有一个例子被着重推荐,就是在电子商务中针对不同商品实行不同的打折策略的问题,实现不同的具体折扣策略类来继承基本折扣策略类,每种商品选择一种折扣策略来实施。
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- 策略模式
- Windows系统编程之异步I/O和完成端口
- 12.5 生日信息
- my ubuntu - the beginning of free source
- 《高效能人士的7个习惯》
- 初学ASP.Net备忘
- 策略模式
- 怎么改变html里file的按钮的值
- 中科院分词包ICTCLAS
- 关于工作和提高自身的市场竞争力之间的思考
- VC里一些容易混淆的地方
- XPath官方手册中文版
- 指定Apache的虚拟目录
- 谨献给为了知识执着的嵌入式初学者(转贴)
- JMX规范(一):JMX概述