一、定義
策略就是演算法,封裝多種演算法,演算法之間可以互相替換。類似於,一道數學題有很多的思路和解題方法。
二、例項
推送策略:
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);
三、優缺點
優:演算法的封裝,演算法的互相替換
缺:客戶端需要傳遞例項,有耦合。當然這可以解決—簡單工廠模式、工廠模式。
總歸還是比較常用的。