设计模式之策略模式
来源:互联网 发布:stcisp检测不到单片机 编辑:程序博客网 时间:2024/06/05 21:56
策略模式
策略模式是一种对象行为型模式,策略模式将算法封装在对象中,这样可以方便地指定和改变一个对象所使用的算法。
定义
定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。
使用场景
- 许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。
- 需要使用一个算法的不同实体。例如,你可能会定义一些反映不同的空间/时间权衡的算法。当这些变体实现为一个算法的类层次时,可以使用策略模式。
- 算法使用客户不应该知道的数据。可使用策略模式以避免暴露复杂的,与算法相关的数据结构。
- 一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现,将相关的条件分支移入它们各自的Strategy类中以代替这些条件语句。
结构
实现
public interface Strategy { void algorithmOperate();}public class ConcreteStrategyA implements Strategy { public void algorithmOperate() { System.out.println("ConcreteStrategyA's algorithmOperate"); }}public class ConcreteStrategyB implements Strategy { public void algorithmOperate() { System.out.println("ConcreteStrategyB's algorithmOperate"); }}public class Context { private Strategy strategy; public Context(Strategy strategy){ this.strategy = strategy; } public void contextOperate(){ strategy.algorithmOperate(); }}
测试
public class Client { public static void main(String[] args) { Strategy startegy = new ConcreteStrategyA(); Context con = new Context(startegy); con.contextOperate(); }}
测试结果:ConcreteStrategyA’s algorithmOperate
策略模式的决定权在用户,系统本身提供不同算法的实现,新增或者删除算法,对各种算法做封装。因此,策略模式多用在算法决策系统中,外部用户只需要决定用哪个算法即可
0 0
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 关于缓存穿透、缓存并发、缓存失效的解决方案
- 关于android studio显示在任务栏无法打开。。
- CentOS 安装FFmpeg
- ViewPager实现Tab
- git查看各个branch之间的关系图
- 设计模式之策略模式
- linux下USB转串口的设置
- NEFU OJ20
- ld文件
- WPF dc.DrawGeometry画出一条连续的线段
- 青岛卫生答题系统刷题脚本使用手册
- jetty的https服务端-1
- u-boot.lds 及其入口Start.S的分析
- Windows下使用VS2015编译openssl库