日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

策略(Strategy)模式

發布時間:2023/12/29 综合教程 29 生活家
生活随笔 收集整理的這篇文章主要介紹了 策略(Strategy)模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/*
* 環境(Context)角色:持有一個Strategy類的引用。
* 抽象策略(Strategy)角色:這是一個抽象角色,通常由一個接口或抽象類實現。此角色給出所有的具體策略類所需的接口。
* 具體策略(ConcreteStrategy)角色:包裝了相關的算法或行為。
*/

    /// <summary>
    ///  策略(Strategy)模式
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
        
            SortedList studentRecords = new SortedList();
            studentRecords.Add("Samual");
            studentRecords.Add("Jimmy");
            studentRecords.Add("Sandra");
            studentRecords.Add("Anna");
            studentRecords.Add("Vivek");

            studentRecords.SetSortStrategy(new QuickSort());
            studentRecords.Sort();
            studentRecords.Display();

            Console.ReadLine();
        }
    }

   // 抽象策略(Strategy)角色
    public abstract class SortStrategy
    {
        abstract public void Sort(ArrayList list);
    }

    public class QuickSort : SortStrategy
    {
        // Methods
        public override void Sort(ArrayList list)
        {
            list.Sort(); // Default is Quicksort
            Console.WriteLine("QuickSorted list ");
        }
    }

    public class ShellSort : SortStrategy
    {
        public override void Sort(ArrayList list)
        {
            Console.WriteLine("ShellSorted list ");
        }
    }

    public class MergeSort : SortStrategy
    {
        public override void Sort(ArrayList list)
        {
            //list.MergeSort();
            Console.WriteLine("MergeSorted list ");
        }
    }
    public class SortedList
    {
        // Fields
        private ArrayList list = new ArrayList();
        private SortStrategy sortstrategy;

        public void SetSortStrategy(SortStrategy sortstrategy)
        {
            this.sortstrategy = sortstrategy;
        }

        public void Sort()
        {
            sortstrategy.Sort(list);
        }

        public void Add(string name)
        {
            list.Add(name);
        }

        public void Display()
        {
            foreach (string name in list)
                Console.WriteLine(" " + name);
        }
    }

可以看出 策略模式的定義 非常類似 簡單工廠。

同樣是 實現一個基類 只是他們的 工廠 不一樣

在策略模式中 環境(Context)角色 是根據不同的子類 通過構造函數來實例化, 來判斷實現那個 子類函數。

那么看看他們結合起來會有什么效果呢

 
 static void Main(string[] args)
        {  
            //結合 簡單工廠
            SortedList sotreContent = new SortedList("1");
            ArrayList list=new ArrayList();
            list.Add("1");

            sotreContent.GetResult(list);

            Console.ReadLine();
        }

/// <summary>
 ///  環境(Context)角色 修改如下
 /// </summary>
public class SortedList
    {
        SortStrategy Strategy = null;
        public SortedList(string type)
        {
            switch (type)
            {
                case "1":
                    QuickSort quickSort = new QuickSort();
                    Strategy = quickSort;
                    break;
                case "2": 
                    break;

            }
        }

        public void GetResult(ArrayList list)
        {
            Strategy.Sort(list); 
        }
  
    }

總結

以上是生活随笔為你收集整理的策略(Strategy)模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。