策略模式应用之商场收费系统(C#源代码)
来源:互联网 发布:lols8 知乎 编辑:程序博客网 时间:2024/04/29 15:16
转自:http://blog.csdn.net/andylin02/archive/2008/11/14/3302034.aspx
- using System;
- namespace CashSystem
- {
- //线程类
- class CRunMain
- {
- public static void ShowMessage()
- {
- Console.WriteLine("-----------------please input your choise: ------------");
- Console.WriteLine("/t/t0. quite");
- Console.WriteLine("/t/t1. pay cash noremally");
- Console.WriteLine("/t/t2. pya cash in 8 rebate");
- Console.WriteLine("/t/t3. pay cash in after 300 return 100");
- Console.WriteLine("-------------------------------------------------------");
- }
- public static int Main()
- {
- CCashContext objCont = new CCashContext();
- CCashSuper objCash = null;
- while (true)
- {
- int nChoice = 0;
- int nCount = 0;
- double duMoney = 0.0;
- double duPrice = 0.0;
- ShowMessage();
- nChoice = Convert.ToInt32(Console.ReadLine());
- switch (nChoice)
- {
- case 0:
- Console.WriteLine("press any key to quit!");
- Console.Read();
- return 0;
- case 1:
- objCash = new CCashNormal();
- break;
- case 2:
- objCash = new CCashRebate(0.8);
- break;
- case 3:
- objCash = new CCashReturn(300, 100);
- break;
- default:
- objCash = null;
- break;
- }
- if (null == objCash)
- {
- Console.WriteLine("input error!");
- continue;
- }
- //set cash object
- objCont.SetBehavior(objCash);
- Console.WriteLine("please input price: ");
- duPrice = Convert.ToDouble(Console.ReadLine());
- Console.WriteLine("please input count: ");
- nCount = Convert.ToInt32(Console.ReadLine());
- duMoney = duPrice * nCount;
- Console.WriteLine("the properly money you should pay is " + objCont.GetResult(duMoney));
- }
- }
- };
- //收费策略Context
- class CCashContext
- {
- //设置策略行为,参数为具体的现金收费子类(正常,打折或返利)
- public void SetBehavior(CCashSuper objCash)
- {
- this.m_objCash = objCash;
- }
- public double GetResult(double duMoney)
- {
- if (null == this.m_objCash)
- {
- Console.WriteLine("null == m_objCash");
- return 0;
- }
- return this.m_objCash.AcceptCash(duMoney);
- }
- private CCashSuper m_objCash;
- };
- abstract class CCashSuper
- {
- public abstract double AcceptCash(double duMoney);
- };
- class CCashReturn:CCashSuper
- {
- public CCashReturn(double duCondition, double duReturn)
- {
- this.m_duCondition = duCondition;
- this.m_duReturn = duReturn;
- }
- public override double AcceptCash(double duMoney)
- {
- if (duMoney > this.m_duCondition)
- {
- duMoney -= this.m_duReturn;
- }
- return duMoney;
- }
- private double m_duCondition = 0.0;
- private double m_duReturn = 0.0;
- };
- class CCashNormal:CCashSuper
- {
- public override double AcceptCash(double duMoney)
- {
- return duMoney;
- }
- };
- class CCashRebate:CCashSuper
- {
- public CCashRebate(double duRebate)
- {
- this.m_duRebate = duRebate;
- }
- public override double AcceptCash(double duMoney)
- {
- return duMoney * this.m_duRebate;
- }
- private double m_duRebate;
- };
- }
- 策略模式应用之商场收费系统(C#源代码)
- 工厂模式的又一个应用:商场收费系统(C#源代码)
- 策略模式--商场收费系统
- 大话设计模式之策略模式-------商场收费系统
- 策略模式---商场收费实例
- 策略模式在简单的商场收费软件中的应用
- 设计模式之PHP项目应用——策略模式设计商场收银系统
- 策略模式之商场促销
- 简单工厂模式---商场收费系统
- 商场收银系统之策略模式学习笔记[C++版]
- 商场收银系统之策略模式学习笔记[C++版]
- 设计模式之策略模式(商场打折)
- 机房收费系统重构之策略模式
- 策略模式-商场促销
- 商场促销 --- 策略模式
- 商场促销-策略模式
- 商场促销----策略模式
- 设计模式之二 商场促销-策略模式
- 秦淮八艳
- 中大印象
- session 生命周期的几个名字
- hibernate一对一关联映射--
- JSTL标签
- 策略模式应用之商场收费系统(C#源代码)
- PHP & MySQL For Dummies 3rd edition
- mysql的大小写敏感性
- hibernate一对一唯一外键关联单向映射
- one-to-many 中的set不能用hashset
- hibernate lazy策略可以用在什么地方
- Professional Java JDK 6 Edition
- 每棵继承树映射成一张表
- Microsoft Project 2007 Bible