状态模式(Strategy Pattern)

简介:
Strategy策略模式是属于设计模式中 对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类.
 
Stratrgy应用比较广泛,比如, 公司经营业务变化图, 可能有两种实现方式,一个是线条曲线,一个是框图(bar),这是两种算法,可以使用Strategy实现.


2006100501.jpg

 
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等




本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2006/10/05/521873.html,如需转载请自行联系原作者
目录
相关文章
|
8月前
|
算法 C++
运用C++ 策略模式的艺术(The Art of Applying Strategy Pattern)
运用C++ 策略模式的艺术(The Art of Applying Strategy Pattern)
54 0
|
设计模式 算法 关系型数据库
设计模式1 - 策略模式【Strategy Pattern】
设计模式1 - 策略模式【Strategy Pattern】
56 0
|
1月前
|
设计模式 算法 定位技术
策略模式(Strategy Pattern)
策略模式(Strategy Pattern)是一种行为型设计模式,允许在运行时选择算法或行为,而不是在编译时确定。通过将具体算法封装成独立的类,并通过统一接口与客户端交互,实现算法的动态替换,避免代码重复和复杂条件语句。适用于支付方式切换、导航路径选择等场景。
83 1
|
1月前
|
设计模式 C# C++
组合模式(Composite Pattern)
组合模式是一种结构型设计模式,将对象组织成树形结构,表示“部分-整体”的层次关系,使客户端可以一致地处理单个对象和组合对象。适用于文件系统、组织架构等场景,具有高灵活性和扩展性,但会增加系统复杂性。
23 1
|
设计模式 机器学习/深度学习 Java
组合模式(Composite Pattern)
组合模式(Composite Pattern)是一种结构型设计模式。
89 0
|
设计模式
设计模式19 - 状态模式【State Pattern】
设计模式19 - 状态模式【State Pattern】
55 0
|
算法 Java
行为型模式 - 策略模式(Strategy Pattern)
行为型模式 - 策略模式(Strategy Pattern)
|
设计模式 算法 Java
Java设计模式教程-策略模式(Strategy Pattern)(上)
Java设计模式教程-策略模式(Strategy Pattern)(上)
139 0
Java设计模式教程-策略模式(Strategy Pattern)(上)
|
设计模式 Java Spring
Java设计模式教程-策略模式(Strategy Pattern)(下)
Java设计模式教程-策略模式(Strategy Pattern)(下)
150 0
Java设计模式教程-策略模式(Strategy Pattern)(下)