设计模式-策略模式
来源:互联网 发布:ubuntu修改ip地址 编辑:程序博客网 时间:2024/06/17 05:01
策略模式:又叫算法簇模式,定义了不同的算法,并且可以相互替换,算法变化独立于客户端,针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式可以动态改变对象的行为,属于对象行为型模式。通常,策略模式适用于当一个应用程序需要实现一种特定的服务或者功能,而且该程序有多种实现方式时使用。
设计原则:把一个类中经常改变或者将来可能改变的部分提取出来,作为一个接口或者抽象类,然后在类中包含这个对象的实例,这样类的实例在运行时就可以随意调用实现了这个接口的类的行为。
策略模式组成:
1、抽象策略角色:策略类,通常由一个接口或者抽象类实现。
2、具体策略角色:包括了相关的算法和行为,可能不止一个具体策略角色。
3、环境角色:持有一个策略类的引用,最终给客户端调用的。
策略类(接口):
package Test201307;public interface BaseStrategy {void takeWay();}实现类:
package Test201307;public class FootStrategy implements BaseStrategy{@Overridepublic void takeWay() {// TODO Auto-generated method stubSystem.out.println("go on foot!");}}
package Test201307;public class ShipBaseStrategy implements BaseStrategy{@Overridepublic void takeWay() {// TODO Auto-generated method stubSystem.out.println("take a ship!");}}
package Test201307;public class TrainBaseStrategy implements BaseStrategy{@Overridepublic void takeWay() {// TODO Auto-generated method stubSystem.out.println("take a train!");}}环境类:
package Test201307;public class Context {private BaseStrategy base;public Context(BaseStrategy base){this.base = base;}public BaseStrategy getBase() {return base;}/** * 调用接口算法、操作 */public void takeWay(){this.base.takeWay();}}测试类:
package Test201307;public class Client { public static void main(String[] args){ Context context =null; //方式1: 步行 context = new Context(new FootStrategy()); context.takeWay(); // 方式2:火车 context = new Context(new TrainBaseStrategy()); context.takeWay(); // 方式3:船 context = new Context(new ShipBaseStrategy()); context.takeWay(); }}
- 设计模式-策略模式
- 设计模式:策略模式
- 设计模式-策略模式
- 设计模式 - 策略模式
- 设计模式-策略模式
- 设计模式-----策略模式
- 设计模式 策略模式
- 设计模式-策略模式
- 设计模式-【策略模式】
- 设计模式-----策略模式
- 设计模式-策略模式
- 设计模式--策略模式
- 设计模式- 策略模式
- 设计模式- 策略模式
- 设计模式------策略模式
- 设计模式--策略模式
- 设计模式-策略模式
- 设计模式--策略模式
- PDM系统的产品结构管理与版本控制
- response一些小细节
- php 检测一个变量是否设置时,empty()能代替isset()吗?
- android开发:加载工程时没有产生R.java的解决办法!
- 我的oracle学习记录
- 设计模式-策略模式
- matlab:矩特征
- HTTP协议详解
- apache模块 合并多个js/css 提高网页加载速度
- 初识sql server 2000-数据库的连接
- Wiki OI 1001 舒适的路线
- 我心目中的软件产品的战略规划制定和执行
- Android 的Backup服务管理机制–助手模式
- Android记事本【4】