- 浏览: 211544 次
- 性别:
- 来自: 北京
文章分类
所谓策略模式就是定义了多种算法,而让不同算法之间的切换不会影响到客户端。
策略模式主要涉及3个组成部分
(1) 环境对象:该类中实现了对抽象策略中定义的接口或者抽象类的引用。
(2) 抽象策略对象:它可由接口或抽象类来实现。
(3) 具体策略对象:它封装了实现同不功能的不同算法。
因此很好理解就是定义一个抽象的接口,该接口包含了一个之类公共的方法,然后定义不同的算法去实现该接口,最后定义一个容器即环境,使用组合的方式将抽象接口注入到容器当中。
最后在调用时动态的向容器中注入具体的策略方法。
实例如下
定义策略接口
public interface Oprator{
void work();
};
定义策略实现类
public class AddOperator implements Operator{
void work(){
sysout("添加操作");
}
};
public class UpdateOperator implements Operator{
void work(){
sysout("修改操作");
}
};
定义环境
public class Context{
private Operator operator;
public Context(Operator ope){
this.operator = ope;
}
public void operate(){
operator.work();
}
};
调用
main(){
Context addCon = new Context(new AddOperator());
addCon.operator();
Context updateCon = new Context(new updateOperator());
updateCon.operator();
}
策略模式主要涉及3个组成部分
(1) 环境对象:该类中实现了对抽象策略中定义的接口或者抽象类的引用。
(2) 抽象策略对象:它可由接口或抽象类来实现。
(3) 具体策略对象:它封装了实现同不功能的不同算法。
因此很好理解就是定义一个抽象的接口,该接口包含了一个之类公共的方法,然后定义不同的算法去实现该接口,最后定义一个容器即环境,使用组合的方式将抽象接口注入到容器当中。
最后在调用时动态的向容器中注入具体的策略方法。
实例如下
定义策略接口
public interface Oprator{
void work();
};
定义策略实现类
public class AddOperator implements Operator{
void work(){
sysout("添加操作");
}
};
public class UpdateOperator implements Operator{
void work(){
sysout("修改操作");
}
};
定义环境
public class Context{
private Operator operator;
public Context(Operator ope){
this.operator = ope;
}
public void operate(){
operator.work();
}
};
调用
main(){
Context addCon = new Context(new AddOperator());
addCon.operator();
Context updateCon = new Context(new updateOperator());
updateCon.operator();
}
发表评论
-
多种单例模式的分析
2012-03-28 18:06 0blog.csdn.net/derpvailzhangfan/ ... -
JDK中的设计模式
2012-03-14 22:56 01.Abstract Factory •java.util.C ... -
简单工厂模式使用心得(使用场景)
2012-02-23 18:24 11481在实际项目中,简单工厂模式是我们使用的最多的设计模式之一,简单 ... -
AbstractList中Iterator模式的妙用
2012-01-13 11:51 942AbstractList中为了实现顺序访问AbstractLi ... -
适合使用命令模式的情景
2012-01-13 11:31 884情景1.当借个类都拥有 ... -
Iterator模式
2012-01-13 10:57 855我个人常叫它游标模式,该模式的主要目的就是,顺序访问集合中的各 ... -
使用工厂设计模式的场景
2012-01-12 15:43 2729创建类对象虽然可以使用new(底层也是通过反射创建对象的),但 ... -
JDK中使用的设计模式
2012-01-13 10:04 14151.抽象工厂模式 实 ... -
JDK中使用的设计模式代码实例
2012-01-05 17:38 0http://stackoverflow.com/questi ... -
享元模式
2011-12-23 10:22 1001通常情况下,我们会需 ... -
合成设计模式
2011-12-22 16:28 942如果要将对象组织到树中,使用树来表示对象之间的关系,请考虑使用 ... -
责任链模式
2011-12-20 18:35 800此文转正于http://wenku.baidu.com/vie ... -
桥梁设计模式
2011-12-19 18:19 802如果有很多对象要处理,而又有很多操作要做。这时可以考虑使用桥梁 ... -
多线程设计模式(Thread-Specific storage)
2011-12-12 15:29 5817引用自http://www.riabook.cn/doc/de ... -
代理模式
2011-11-30 15:26 904代理模式实际上是对对象的一种代理,以控制对象的访问。 有些情况 ... -
观察者模式
2011-11-16 14:48 1368声明转载的,简单易懂,呵呵 观察者模式的构造 l 抽 ... -
命令模式
2011-11-16 14:11 1220今天想学学命令模式,看见了一个文章讲的就是命令模式,感觉实例比 ... -
建造模式
2011-11-14 12:03 879建造模式是将负责对象 ... -
设计模式之适配器模式
2011-11-09 18:24 931适配器模式:主要是为了解决,老的对象在新的环境中不兼容的现象。 ... -
设计模式之模版方法
2011-11-09 16:31 782模版方法是一种非常简单的设计模式:简单的理解就是将关键的业务方 ...
相关推荐
策略模式结合模板方法模式
策略模式的 C++ 代码实现, ide :XCode
策略模式定义了方法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。 还可以那家咖啡屋,记忆里很温馨,很sugar,或许很多温馨美好的回忆都是于咖啡有关的。 我们常常说设计...
所有模式都可分为类模式和对象模式两种,类模式是继承,对象模式是委托,而桥接模式和策略模式都是将任务委托给另外一个接口去实现,那么两者的区别什么呢?
主要介绍了详解SpringBoot结合策略模式实战套路,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
技术: 1. spring事件驱动(ApplicationEventPublisher) 2. 策略模式处理事件 目的: 1. 通过event,代码逻辑异步处理 2. 通过策略模式,构建具体监听实现 3. 解耦 4. 容错(降低代码块错误风险)
这是策略模式中的一个经典实例,通过鸭子问题,能让学习者更好的了解设计模式,这也是headfirst 设计模式中用的经典实例
深入浅出设计模式之抽象工厂模式+工厂方法模式+策略模式实现手机加工厂(加类图)
策略模式实例策略模式实例策略模式实例策略模式实例策略模式实例
策略模式代码,两种方式实现,第一种,通过map存储方式,第二种,通过配置文件加反射方式
策略模式的简单例子,根据《Head First设计模式》中第一章中的Duck编写
策略模式例子,纯代码,copy后即可运行; 1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。 2、一个系统需要动态地在几种算法中...
策略模式在实际项目中的应用二,该测试demo为普通项目,导入build path一下lib目录下的jar包,然后运行测试类即可在控制台看到测试结果
处理层的设计采用了设计模式中的策略模式、模板方法模式和工厂模式。 Server端和Client端的实现也采用了分层的设计方式,包含自定义的模型层、视图层和控制层。 说明:程序采用配置文件的方式进行初始化,运行时时请...
55-Java设计模式之策略模式与状态模式1
设计模式中的策略模式,同时兼容简单工厂模式,商场收银模式,易懂可用。
策略模式策略模式策略模式
javascript的策略模式和代理模式简介,附代码
在网络上看到几个加密解密算法,本着"取之于民用之于民"的方针测试一下,并用策略模式将这些算法封装共享。
设计模式中的策略模式,template模式详细讲解。