zoukankan      html  css  js  c++  java
  • 设计模式学习笔记——策略模式(Strategy)

    1.特点:将一系列算法逐个封装并可相互替换,易于切换、理解、扩展。

          优点:

    1)提供了管理相关算法族的方法。

    2)可以避免使用多重条件转移语句。

    缺点:

    1)必须知道所有的具体策略类及它们的区别.

    2)生成许多的策略类。

    2.概念:

    3.类图:

    4.实现代码:

    /// <summary>
        /// 策略类,定义了所有支持的算法的公共接口
        /// </summary>
        public abstract class Stratege
        {
            /// <summary>
            /// 策略类中支持的算法,当然还可以有更多,这里只定义了一个。
            /// </summary>
            public abstract void Algorithm();
        }
    
        /// <summary>
        /// 具体策略 A,实现了一种具体算法
        /// </summary>
        public class ConcreteStrategeA : Stratege
        {
    
            /// <summary>
            /// 具体算法
            /// </summary>
            public override void Algorithm()
            {
                // 策略A中实现的算法
            }
        }
        /// <summary>
        /// 具体策略 B,实现了一种具体算法
        /// </summary>
        public class ConcreteStrategeB : Stratege
        {
    
            /// <summary>
            /// 具体算法
            /// </summary>
            public override void Algorithm()
            {
                // 策略B中实现的算法
            }
        }
    
    
        /// <summary>
        /// Context 上下文,维护一个对Stratege对象的引用
        /// </summary>
        public class Context
        {
            private Stratege m_Stratege;
    
            /// <summary>
            /// 初始化上下文时,将具体策略传入
            /// </summary>
            /// <param name="stratege"></param>
            public Context(Stratege stratege)
            {
                m_Stratege = stratege;
            }
    
            /// <summary>
            /// 根据具体策略对象,调用其算法
            /// </summary>
            public void ExecuteAlgorithm()
            {
                m_Stratege.Algorithm();
            }
        }
    

      

  • 相关阅读:
    解题:POI 2009 TAB
    解题:POI 2015 Pieczęć
    解题:POI 2013 Taxis
    解题:POI 2015 Kinoman
    题目1012:畅通工程(并查集)
    并查集深入分析
    题目1186:打印日期(日期计算)
    C/C++如何整行读入字符串?
    四种方法解决最大连续子序列和问题
    题目1011:最大连续子序列
  • 原文地址:https://www.cnblogs.com/ice-baili/p/4710408.html
Copyright © 2011-2022 走看看