程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 設計模式之五(策略模式)

設計模式之五(策略模式)

編輯:C#入門知識

策略模式:它定義了算法家族,分別封裝起來,讓它們之間可以相互替換,此模式讓算法的變化,不會影響到使用算法的客戶。

 

Strategy:策略類,定義所有支持的算法的公共接口

ConcreteStrategy1,ConcreteStrategy2,ConcreteStrategy3這三個是具體策略類,封裝了具體的算法或行為,繼承於Strategy

Context上下文,用一個ConcreteStrategy來配置,維護一個對Strategy對象的引用。

簡單了解了一下,策略模式的定義和它的模式結構圖之後,我們現在通過代碼進行進一步的了解。

Strategy類,定義所有支持的算法的公共接口

        

ConcreteStrategy,封裝了具體的算法或行為,繼承於Strategy

 
             

Context,用一個ConcreteStrategy來配置,維護一個對Strategy對象的引用。

     .strategy = 

客戶端調用代碼

      Main(=  Context(=  Context(=  Context(

運行效果展示

 策略模式是一種定義一系列算法的方法,從概念上來看,所有這些算法完成的都是相同的工作,只是實現不同,它可以以相同的方式調用所有的算法,減少了各種算法類與使用算法類之間的耦合。

策略模式的優點:

  策略模式的Strategy類層次為Context定義了一系列可供重用的算法或行為。繼承有助於析取出這些算法的公共功能。

  簡化了單元測試,因為每個算法都有自己的類,可以通過自己的接口單獨測試。

總的來說,策略模式就是用來封裝算法的,但在實踐中,我們發現可以用它來封裝幾乎任何類型的規則,只要在分析過程中聽到需要在不同時間應用不同的業務規則,就可以考慮使用策略模式處理這種變化的可能性。

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved