Strategy策略模式是属于设计模式中 对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

Stratrgy应用比较广泛,比如, 公司经营业务变化图, 可能有两种实现方式,一个是线条曲线,一个是框图(bar),这是两种算法,可以使用Strategy实现.

public abstract class Rule
    {
        public abstract void replace();

    }

    public class RuleOne : Rule
    {
        public RuleOne()
        {
        }
        public override void replace()
        {
            System.Console.WriteLine("replace1");
        }

    }

    public class RuleTwo : Rule
    {
        public RuleTwo()
        {
        }

        public override void replace()
        {
            Console.WriteLine("replace2");
        }

    }

    public class RuleSolve 
    {
        private Rule strategy;

        public RuleSolve(Rule rule)
        {
            this.strategy = rule;
        }

        public void getContext()
        {
            this.strategy.replace();
        }
    }
    class SrategyTest
    {
        [STAThread]
        static void Main(string[] args)
        {
            
            RuleSolve solver = new RuleSolve(new RuleOne());
            solver.getContext();

            solver = new RuleSolve(new RuleTwo());
            solver.getContext();
        }
    }

整个Strategy的核心部分就是抽象类的使用,使用Strategy模式可以在用户需要变化时,修改量很少,而且快速.

Strategy和Factory有一定的类似,Strategy相对简单容易理解,并且可以在运行时刻自由切换。Factory重点是用来创建对象。

Strategy适合下列场合:

1.以不同的格式保存文件;
2.以不同的算法压缩文件;

3.以不同的算法截获图象;

4.以不同的格式输出同样数据的图形,比如曲线 或框图bar等

状态模式(Strategy Pattern)相关推荐

  1. 设计模式(十二):通过ATM取款机来认识“状态模式”(State Pattern)

    说到状态模式,如果你看过之前发布的重构系列的文章中的<代码重构(六):代码重构完整案例>这篇博客的话,那么你应该对"状态模式"并不陌生,因为我们之前使用到了状态模式进行 ...

  2. 解读设计模式----策略模式(Strategy Pattern)

    一.模式概述      策略模式(Strategy Pattern)在外形上与状态模式很相似,但在意图上有些不同.其意图是使这些算法可以相互替换,并提供一种方法来选择最合适的算法.       在我应 ...

  3. 设计模式(一):“穿越火线”中的“策略模式”(Strategy Pattern)

    在前段时间呢陆陆续续的更新了一系列关于重构的文章.在重构我们既有的代码时,往往会用到设计模式.在之前重构系列的博客中,我们在重构时用到了"工厂模式"."策略模式" ...

  4. 8.6 GOF设计模式四: 策略模式… Strategy Pattern

    策略模式- Strategy Pattern  在POS系统中,有时需要实行价格优惠, 该如何处理?  对普通客户或新客户报全价  对老客户统一折扣5%  对大客户统一折扣10%  注:课件 ...

  5. php 状态模式,PHP设计模式(十九)—状态模式 (State Pattern)

    状态模式 (State Pattern) :允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类.其别名为状态对象(Objects for States) (一)为什么需要状态模式 ...

  6. 二十四种设计模式:策略模式(Strategy Pattern)

    策略模式(Strategy Pattern) 介绍 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换.本模式使得算法的变化可独立于使用它的客户. 示例 有一个Message实体类,对它的操 ...

  7. 设计模式实战-策略模式(Strategy Pattern)

    0 联系我 图片标题 1.Q群[Java开发技术交流]:jq.qq.com/?_wv=1027&a- 2.完整博客链接:www.shishusheng.com 3.知乎:www.zhihu.c ...

  8. 策略模式Strategy Pattern应用场景

    策略模式(Strategy Pattern)是指定义了算法家族.分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户. 策略模式的应用场景 1.假如系统中有很多类,而他们的 ...

  9. 状态模式(State Pattern)

    状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类 考虑如下场景,自动售票机: 每一个方格表示自动售票机的一种状态,每一个箭头线表示自动售票机由一个状态转换到另一个状态所需要的 ...

  10. 锈才学设计模式之 —— 策略模式(Strategy Pattern)

    锈才学设计模式之  -- 策略模式 策略模式:把功能提供者单独封装成类,使它们可以互相替换使用,让功能提供者独立于使用者(调用者). 说明: 在面向对象编程中,我们尽量将功能(类)设计成复用,以符合O ...

最新文章

  1. 神经网络参数量的计算:以UNet为例
  2. 毛边效果 html,Html5 Canvas画线有毛边解决方法
  3. 清理c盘垃圾的cmd命令_用命令删除系统垃圾,这波操作深藏功与名
  4. LeetCode17——Letter Combinations of a Phone Number(手机几个按键对应的字母(符号)组合)
  5. 卫生间装修有哪些技巧?
  6. 我38岁,从外企技术高管到失业在家,只因为做错了这件事
  7. C# CLRInsideOut 托管代码与非托管代码互操作,产生相关调用代码的好工具 C++ 头文件转C# 的好工具...
  8. k8s中实现自动数据库初始化(mysql,postgresql)
  9. VSTO 学习笔记(六)在 Excel 2010中使用RDLC报表
  10. Python中值被转换成字符串的两种机制
  11. html5 打开支付宝app,支付宝H5唤醒APP
  12. MTK Android GT928触摸屏驱动客制化触摸的开关
  13. 泛泰A860版本的识别
  14. 立春----直流电压电流检测模块
  15. 华东交通大学计算机专业分数,往年华东交通大学优势专业排名及分数线参考
  16. 2697v3只支持服务器内存,Intel 18核心E5-2697 v4实测:虐杀桌面顶级8核i7-5960X!
  17. 出现Avoid mutating a prop directly since the value will错误 已解决
  18. 由浅入深学习Flash制作赛车游戏教程
  19. 远程桌面端口映射如何设置
  20. ds3617xs 华擎J3455 无线网卡m.2装千兆网卡组成链路聚合

热门文章

  1. 应用程序错误代码0xe06d7363怎么解决
  2. Proxy动态代理代码示例
  3. 简单帅气的折纸机器人_新型电磁喷雾可将任何物体变成机器人,有望在生物学领域应用...
  4. 图层重命名快捷键_玩转CAD快捷键(大全),一篇文章就够了
  5. html view设置全屏,uni-app 如何设置web-view 不全屏,不自动铺满,动态控制web-view的高度...
  6. 洛谷——P1046 [NOIP2005 普及组] 陶陶摘苹果
  7. 实验4-2-2 求e的近似值 (15 分)
  8. Vue自定义指令—— 完美解决H5页面不同尺寸屏幕的适配问题
  9. php jwt payload,php实现jwt
  10. kafka-3-故障排错