今天執著看《大話模式設計》,又學到乙個很重要的東東:第二種模式:策略模式:
我們來看乙個關於收銀系統:它的介面是這樣的:
和以前一樣我們選來看看業務邏輯層的**:
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...