1. 程式人生 > >【軟考學習】設計模式——策略模式

【軟考學習】設計模式——策略模式

【背景】
設計模式是非常重要的一塊知識,每個設計模式都值得深入瞭解和學習。
【內容】

結構型設計模式總結:

橋接設計模式總結:

    一、定義:策略模式定義了一系列的演算法,並將每一個演算法封裝起來,而且使它們還可以相互替換。策略模式讓演算法獨立於使用它的客戶而獨立變化。

應用場景:1、 多個類只區別在表現行為不同,可以使用Strategy模式,在執行時動態選擇具體要執行的行為。2、 需要在不同情況下使用不同的策略(演算法),或者策略還可能在未來用其它方式來實現。3、 對客戶隱藏具體策略(演算法)的實現細節,彼此完全獨立。

    二、UML結構圖:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 策略模式_基本程式碼
{
    class Program
    {
        static void Main(string[] args)
        {
            Context context;

            context=new Context(new ConcreteStrategyA());
            context.ContextInterface();

            context=new Context(new ConcreteStrategyB());
            context.ContextInterface();

            context = new Context(new ConcreteStrategyC());
            context.ContextInterface();

            Console.Read();
        }
    }

    abstract class Strategy
    {
        public abstract void AlogrithmInterface();
    }

    class ConcreteStrategyA : Strategy
    {
        public override void AlogrithmInterface()
        {
            Console.WriteLine("演算法A實現");
        }
    }

    class ConcreteStrategyB : Strategy
    {
        public override void AlogrithmInterface()
        {
            Console.WriteLine("演算法B實現");
        }
    }

    class ConcreteStrategyC : Strategy
    {
        public override void AlogrithmInterface()
        {
            Console.WriteLine("演算法C實現");
        }
    }

    class Context
    {
        Strategy strategy;
        public Context(Strategy strategy)
        {
            this.strategy = strategy;
        }

        public void ContextInterface()
        {
            strategy.AlogrithmInterface();
        }
    }
}