• 设计模式策略模式(Strategy Pattern)


    策略模式

    策略模式是一种行为设计模式,它将一组行为转换为对象,并在运行时可以动态的进行切换。

    Strategy

    算法接口,Context通过这个接口来调用由ConcreteStrategy定义的算法

    ConcreteStrategy

    Strategy接口的实现

    Context

    维护对Strategy对象的引用,将所有计算延迟到ConcreteStrategy

    示例代码

        public class SortedList
        {
            private List<string> list = new List<string>();
            private SortStrategy sortstrategy;
            public void SetSortStrategy(SortStrategy sortstrategy)
            {
                this.sortstrategy = sortstrategy;
            }
            public void Add(string name)
            {
                list.Add(name);
            }
            public void Sort()
            {
                sortstrategy.Sort(list);
                // Iterate over list and display results
                foreach (string name in list)
                {
                    Console.WriteLine(" " + name);
                }
                Console.WriteLine();
            }
        }
    
        public abstract class SortStrategy
        {
            public abstract void Sort(List<string> list);
        }
    
        public class MergeSort : SortStrategy
        {
            public override void Sort(List<string> list)
            {
                Console.WriteLine("MergeSorted list ");
            }
        }
    
        public class QuickSort : SortStrategy
        {
            public override void Sort(List<string> list)
            {
                list.Sort();  // Default is Quicksort
                Console.WriteLine("QuickSorted list ");
            }
        }
    
        public class ShellSort : SortStrategy
        {
            public override void Sort(List<string> list)
            {
                Console.WriteLine("ShellSorted list ");
            }
        }
    
    //--------------------------------------------------
        SortedList studentRecords = new SortedList();
        studentRecords.Add("Samual");
        studentRecords.Add("Jimmy");
        studentRecords.Add("Sandra");
        studentRecords.Add("Vivek");
        studentRecords.Add("Anna");
        studentRecords.SetSortStrategy(new QuickSort());
        studentRecords.Sort();
        studentRecords.SetSortStrategy(new ShellSort());
        studentRecords.Sort();
        studentRecords.SetSortStrategy(new MergeSort());
        studentRecords.Sort();
    
  • 相关阅读:
    SPOJ 4110 Fast Maximum Flow (最大流模板)
    CF 277E Binary Tree on Plane (拆点 + 费用流) (KM也可做)
    POJ 2289 Jamie's Contact Groups (二分+最大流)
    POJ 1723 SOLDIERS (中位数)
    TRI 解题报告
    POJ 2455 Secret Milking Machine (二分 + 最大流)
    POJ 2112 Optimal Milking (二分 + 最大流)
    POJ 2195 Going Home / HDU 1533(最小费用最大流模板)
    POJ 2135 Farm Tour (最小费用最大流模板)
    运维自动化
  • 原文地址:https://www.cnblogs.com/zhuanghamiao/p/StrategyPattern.html
Copyright © 2020-2023  润新知