乙個策略模式的實現

2021-04-18 04:29:53 字數 1554 閱讀 7010

今天執著看《大話模式設計》,又學到乙個很重要的東東:第二種模式:策略模式:

我們來看乙個關於收銀系統:它的介面是這樣的:

和以前一樣我們選來看看業務邏輯層的**:

using system;

using system.collections.generic;

using system.text;

namespace winform1

//正常收費子類,也就是說即不打折,也不返現

public class cashnormal : cashsuper

}//打折收費子類

public class cashrebate:cashsuper

public override double acceptcash(double money)

}//返現子類

public class cashereturn : cashsuper

public override double acceptcash(double money)

else}}

//設計乙個策略模式,注意此模式在與簡單工廠模式混合使用

public class cashcontxt

break;

case "滿300返100":

break;

case "打八折":

break;}}

public double cashcontextinte***ce(double money)

}//設計乙個簡單工廠模式,用此模式一樣的可以完成系統功能(但本例主要使用上面的模式完成)

public class cashfactory

break;

case "滿300返100":

break;

case "打八折":

break;

}return cs;}}

}

好了,我們再來看看客戶端的**:
using system;

using system.collections.generic;

using system.componentmodel;

using system.data;

using system.drawing;

using system.text;

using system.windows.forms;

namespace winform1

double totalprice = 0.00;

//計算總價,客戶端**

private void button1_click(object sender, eventargs e)

//清空

private void button2_click(object sender, eventargs e)

}}

其實我對此模式也不是很了解,只是今晚看了一下,覺得還可以理解,所以就把它貼出來與大家共同討論,共同學習。

乙個支付案例,學會策略模式!

策略模式的特點是不管過程怎麼樣,結果都是一樣的。不管乘坐飛機還是火車,最後都會到達北京 不管哪種支付方式,最終都會支付成功。過程不一樣,結果都一樣。支付時,會有很多引數,很多邏輯,經常會遇到一種支付方式,上百行的 而且還需要很好的把控事務。如果多種支付方式,也會成倍的 維護起來相當難受。如下 示例 ...

Singleton模式的乙個實現

設計模式上的singleton模式是宣告了乙個static的singleton指標,當getinstance被呼叫的時候再new出乙個物件然後賦值給這個指標。然而這樣會有乙個問題,即這個new出來的物件應該何時釋放?如果只是記憶體沒有釋放問題還不大,但是如果這個singleton還占有資源,而程式退...

乙個簡單MVC模式的實現

簡單mvc模式的實現主要由3部分組成,用於初始化的configlistener,控制器 controller和配置檔案 mvc config.xml 1 configlistener 主要用於在初始化servletcontext時讀入配置檔案,並把路徑和 資訊儲存在attribute中。如下 pub...