博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式笔记——Strategy
阅读量:5064 次
发布时间:2019-06-12

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

策略模式Strategy

定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。

 

 

策略模式是一种定义一些列算法的方法,所有这些算法完成的工作相同,但是实现不同,它可以用相同的方式调用所有的算法,减少各种算法类与使用算法类之间的耦合

 

Strategy类层次为Context定义了一系列的可重用的算法或者行为。继承有助于析取出这些算法中的公共功能。

 

当不同的行为堆砌在一个类里面的时候,就很难避免用条件语句来选择合适的行为。将这些行为封装在独立的Strategy类中,可以使用这些行为的类中消除条件语句。

 

策略模式可以用来封装几乎任何类型的规则。只要在分析过程中听到需要在不同世界应用不同的业务规则,就可以考虑使用策略模式处理这变化的可能性。

package strategy.pattern;public class StrategyPattern {	/**	 * @param args	 */	public static void main(String[] args) {		// TODO Auto-generated method stub		Context context;		context=new Context(new ConcreteStrategyA());		context.ContextInterface();				context=new Context(new ConcreteStrategyB());		context.ContextInterface();				context=new Context(new ConcreteStrategyC());		context.ContextInterface();	}}
package strategy.pattern;public interface Strategy {	public void AlgorithmInterface();	}
package strategy.pattern;public class Context {		private Strategy stragety;		public Context(Strategy stragety){		this.stragety=stragety;	}		public void ContextInterface(){		stragety.AlgorithmInterface();	}}
package strategy.pattern;public class ConcreteStrategyA implements Strategy {	@Override	public void AlgorithmInterface() {		// TODO Auto-generated method stub		System.out.println("Concrete Algorithm A");	}}
package strategy.pattern;public class ConcreteStrategyB implements Strategy {	@Override	public void AlgorithmInterface() {		// TODO Auto-generated method stub		System.out.println("Concrete Algorithm B");	}}
package strategy.pattern;public class ConcreteStrategyC implements Strategy {	@Override	public void AlgorithmInterface() {		// TODO Auto-generated method stub		System.out.println("Concrete Algorithm C");	}}

转载于:https://www.cnblogs.com/leestar/archive/2012/08/20/2810618.html

你可能感兴趣的文章
非对称加密
查看>>
bzoj 3413: 匹配
查看>>
从下周开始就要采用网上记录值班日志了
查看>>
在qq中可以使用添加标签功能
查看>>
eclipse 自定义布局
查看>>
团队项目开发客户端——登录子系统的设计
查看>>
【AppScan心得】IBM Rational AppScan 无法记录登录序列
查看>>
[翻译] USING GIT IN XCODE [4] 在XCODE中使用GIT[4]
查看>>
简化通知中心的使用
查看>>
SpringMVC的@Validated校验注解使用方法
查看>>
Python之os模块
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
【蓝桥杯】PREV-21 回文数字
查看>>
html 简介
查看>>
python使用上下文对代码片段进行计时,非装饰器
查看>>
js中比较实用的函数用法
查看>>
安装预览版镜像后无法检测到预览版更新的解决方案
查看>>
【bzoj5099】[POI2018]Pionek 双指针法
查看>>
别让安全问题拖慢了 DevOps!
查看>>
JAR打包和运行
查看>>