zoukankan      html  css  js  c++  java
  • 策略模式

    策略模式包含三个角色:

    • 环境(Context)角色:持有一个Strategy类的引用。
    • 抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
    • 具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。

    Strategy类(抽象策略)

    abstract class Strategy
    {
        //算法方法
        public abstract void AlgorithmInterface();
    }

    ConcreteStrategy类(具体策略)

    //具体算法A
    class ConcreteStrategyA:Strategy
    {
        //算法A实现方法
        public override void AlgorithmInterface();
        {
            Console.WriteLine("算法A实现");
        }
    }
    
    //具体算法B
    class ConcreteStrategyB:Strategy
    {
        //算法B实现方法
        public override void AlgorithmInterface();
        {
            Console.WriteLine("算法B实现");
        }
    }
    
    //具体算法C
    class ConcreteStrategyC:Strategy
    {
        //算法C实现方法
        public override void AlgorithmInterface();
        {
            Console.WriteLine("算法C实现");
        }
    }

    Context类(环境)

    //上下文
    class Context
    {
        Strategy strategy;
        public Context(Strategy stratety)   //初始化时,传入具体的策略对象
        {
            this.strategy=strategy;
        }
        //上下文接口
        public void ContextInteface()  //根据具体的策略对象,调用其算法的方法
        {
            strategy.AlgorithmInterface();
        }
    }

    客户端代码

    static void Main(string[] args)
    {
        Context context;
        //由于实例化不同的策略,所以最终在调用context.ContextInterface()时,所获得的结果不尽相同
        context=new Context(new ConcreteStrategyA());
        context.ContextInterface();
    
        context=new Context(new ConcreteStrategyB());
        context.ContextInterface();
    
        context=new Context(new ConcreteStrategyC());
        context.ContextInterface();
    
        Console.Read();
    }
  • 相关阅读:
    14_java之变量|参数|返回值|修饰符
    NYOJ 202 红黑树 (二叉树)
    NYOJ 138 找球号(二) (哈希)
    NYOJ 136 等式 (哈希)
    NYOJ 133 子序列 (离散化)
    NYOJ 129 树的判定 (并查集)
    NYOJ 117 求逆序数 (树状数组)
    NYOJ 93 汉诺塔 (数学)
    HDU 2050 折线分割平面 (数学)
    天梯赛L2-008 最长对称子串 (字符串处理)
  • 原文地址:https://www.cnblogs.com/shanoon/p/5452209.html
Copyright © 2011-2022 走看看