設計模式(四):策略模式

K戰神發表於2016-01-06

一、定義

策略就是演算法,封裝多種演算法,演算法之間可以互相替換。類似於,一道數學題有很多的思路和解題方法。

二、例項

推送策略:

 public interface  IPushStrategy
    {
        bool Push();
    }

    public class QQPush : IPushStrategy
    {
        public bool Push()
        {
            Console.WriteLine("QQ推送.");
            return true;
        }
    }

    public class EmailPush : IPushStrategy
    {
        public bool Push()
        {
            Console.WriteLine("Email推送.");
            return true;
        }
    }

推送服務:

 public class PushService
    {
        IPushStrategy push;
        public PushService(IPushStrategy _push)
        {
            push = _push;
            Console.WriteLine("啟動:推送服務.");
            push.Push();
        }
        
    }

客戶端:

//策略模式
Strategy.IPushStrategy emailpush = new Strategy.EmailPush();
Strategy.PushService ps = new Strategy.PushService(emailpush);

三、優缺點

優:演算法的封裝,演算法的互相替換

缺:客戶端需要傳遞例項,有耦合。當然這可以解決—簡單工廠模式、工廠模式。

總歸還是比較常用的。

相關文章