策略模式 Strategy

2021-09-11 03:32:32 字數 3208 閱讀 1835

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

說明:1.通過繼承抽象策略實現多個具體策略方法處理,在乙個類中傳遞不同的具體例項做為引數,獲得不同的物件的演算法,封裝在同乙個方法中,當這個類的例項呼叫這個封裝了演算法的方法時,因傳入的物件引數的不同,獲得的處理結果也不同。

2.通過傳入的物件引數獲得操作,改變乙個方法的不同處理結果。

3.工廠方法是通過條件,建什麼物件,策略模式是根據條件獲得不同的演算法。

3.每種演算法單獨維護即維護的查詢,也簡單了測試,不影響其他演算法。

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

策略模式可以為一些列相同的演算法,提取乙個公共的功能,通過引數,獲得所需的演算法執行。

例題中的打折、返利,都是實際收費其中的一種方式

策略模式+簡單工廠模式,組合使用

配置檔案

xml 

version

="1.0" encoding

="utf-8" ?>

<

cashaccepttype

>

<

type

>

<

name

>正常收費

name

>

<

class

>cashnormal

class

>

<

para

>

para

>

type

>

<

type

>

<

name

>滿300返100

name

>

<

class

>cashreturn

class

>

<

para

>300,100

para

>

type

>

<

type

>

<

name

>滿200返50

name

>

<

class

>cashreturn

class

>

<

para

>200,50

para

>

type

>

<

type

>

<

name

>打8折

name

>

<

class

>cashrebate

class

>

<

para

>0.8

para

>

type

>

<

type

>

<

name

>打7折

name

>

<

class

>cashrebate

class

>

<

para

>0.7

para

>

type

>

cashaccepttype

>

工廠超類

using system;

using system.collections.generic;

using system.text;

namespace 商場管理軟體

}

策略超類

using system;

using system.collections.generic;

using system.text;

namespace 商場管理軟體

public double getresult(double money)}}

演算法實現類
using system;

using system.collections.generic;

using system.text;

namespace 商場管理軟體

public override double acceptcash(double money)}}

form使用者介面

using system;

using system.collections.generic;

using system.componentmodel;

using system.data;

using system.drawing;

using system.text;

using system.windows.forms;

using system.reflection;

namespace 商場管理軟體

dataset ds;//用於存放配置檔案資訊

double total = 0.0d;//用於總計

private void form1_load(object sender, eventargs e)

cbxtype.selectedindex = 0;

}private void btnok_click(object sender, eventargs e)

/// ///

清空控制項資訊

///

///

///

private void btnclear_click(object sender, eventargs e)}}

結果顯示
posted on 

2009-11-29 21:18

...)

編輯收藏

策略 Strategy 模式

strategy 模式也叫策略模式,是由 gof提出的 23種軟體設計模式的一種。strategy 模式是行為模式之一,它對一系列的演算法加以封裝,為所有演算法定義乙個抽象的演算法介面,並通過繼承該抽象演算法介面對所有的演算法加以封裝和實現,具體的演算法選擇交由客戶端決定 策略 strategy 模...

策略模式 Strategy

public context string strategytype df對策略模式的定義是這樣的 它定義了演算法家族,分別封裝起來,讓它們之間可以相互替換,此模式讓演算法的變化不會影響到使用演算法的客戶 main函式 abstract class strategy class concretest...

策略模式 Strategy

定義 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。型別 行為類模式 結構圖 策略模式的優缺點 策略模式的主要優點有 策略模式的缺點主要有兩個 必須對客戶端 呼叫者 暴露所有的策略類,因為使用哪種策略是由客戶端來決定的,因此,客戶端應該知道有什麼策略,並且了解各種策略之間的區別,否...