C#大话设计模式代码
来源:互联网 发布:js中date对象的方法 编辑:程序博客网 时间:2024/05/01 07:59
收银程序一:简单工厂模式实现
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// 简单工厂模式实现方式
/// </summary>
public partial class Module_Study_DesignPatter : System.Web.UI.Page
{
/// <summary>
/// 现金收取类
/// </summary>
abstract class CashSuper
{
public abstract double AcceptCash(double money);
}
/// <summary>
/// 正常收费
/// </summary>
public class NormalCash : CashSuper
{
public override double AcceptCash(double money)
{
throw money;
}
}
/// <summary>
/// 打折收费
/// </summary>
public class RebateCash : CashSuper
{
double _moneyRebate = 1d;
public double MoneyRebate
{
set { _moneyRebate = value; }
get { return _moneyRebate; }
}
public RebateCash(double moneyRebate)
{
MoneyRebate = moneyRebate;
}
public override double AcceptCash(double money)
{
return MoneyRebate * money;
}
}
/// <summary>
/// 返利收费
/// </summary>
public class ReturnCash:CashSuper
{
double _moneyCondition = 0.0d;
double _moneyReturn = 0.0d;
public ReturnCash(double moneyCondition,double moneyReturn)
{
_moneyCondition = moneyCondition;
_moneyReturn = moneyReturn;
}
public override double AcceptCash(double money)
{
double result;
if (money > _moneyCondition)
{
result=money -Math.Floor((money /_moneyCondition))*_moneyReturn;
}
}
}
/// <summary>
/// 收费工厂
/// </summary>
class CashFactory
{
public static CashSuper CreateCash(string cashType)
{
CashSuper cs = null;
switch (cashType)
{
case "正常收费":
cs = new NormalCash();
break;
case "满300送00":
cs=new ReturnCash(300.0d,100.d);
break;
case "":
cs = new RebateCash(0.8d);
break;
}
return cs;
}
}
protected void Page_Load(object sender, EventArgs e)
{
}
}
收银程序二:策略模式
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// 策略模式实现方式
/// </summary>
public partial class Module_Study_StrategyPatter : System.Web.UI.Page
{
/// <summary>
/// 收费策略
/// </summary>
class CashContext
{
/// <summary>
/// 定义现金收取类
/// </summary>
CashSuper cs;
/// <summary>
/// 设置策略行为,参数为具体的现金收费类
/// </summary>
/// <param name="csuper"></param>
public void SetBehavior(CashSuper csuper)
{
this.cs = csuper;
}
/// <summary>
/// 得到现金促销计算结果
/// </summary>
/// <param name="money"></param>
/// <returns></returns>
public double GetResult(double money)
{
return cs.AcceptCash(money);
}
}
/// <summary>
/// 现金收取类
/// </summary>
abstract class CashSuper
{
public abstract double AcceptCash(double money);
}
/// <summary>
/// 正常收费
/// </summary>
public class NormalCash : CashSuper
{
public override double AcceptCash(double money)
{
throw money;
}
}
/// <summary>
/// 打折收费
/// </summary>
public class RebateCash : CashSuper
{
double _moneyRebate = 1d;
public double MoneyRebate
{
set { _moneyRebate = value; }
get { return _moneyRebate; }
}
public RebateCash(double moneyRebate)
{
MoneyRebate = moneyRebate;
}
public override double AcceptCash(double money)
{
return MoneyRebate * money;
}
}
/// <summary>
/// 返利收费
/// </summary>
public class ReturnCash:CashSuper
{
double _moneyCondition = 0.0d;
double _moneyReturn = 0.0d;
public ReturnCash(double moneyCondition,double moneyReturn)
{
_moneyCondition = moneyCondition;
_moneyReturn = moneyReturn;
}
public override double AcceptCash(double money)
{
double result;
if (money > _moneyCondition)
{
result=money -Math.Floor((money /_moneyCondition))*_moneyReturn;
}
}
}
/// <summary>
/// 收费工厂
/// </summary>
class CashFactory
{
public static CashSuper CreateCash(string cashType)
{
CashSuper cs = null;
switch (cashType)
{
case "正常收费":
cs = new NormalCash();
break;
case "满300送00":
cs=new ReturnCash(300.0d,100.d);
break;
case "":
cs = new RebateCash(0.8d);
break;
}
return cs;
}
}
protected void Page_Load(object sender, EventArgs e)
{
}
}
评:这样更改,又把变化点交回客户端,这样客户端就必须要知道所以的策略,所以至还要需要进一步完善..
- C#大话设计模式代码
- 大话设计模式-代码
- 大话设计模式-代码设计原则
- 大话设计模式之策略模式代码
- 《大话设计模式》Python版代码实现
- 《大话设计模式》Python版代码实现
- 《大话设计模式》Python版代码实现
- 《大话设计模式》Python版代码实现
- 《大话设计模式》Python版代码实现
- 《大话设计模式》Python版代码实现
- 《大话设计模式》Python版代码实现
- 《大话设计模式》Python版代码实现
- 《大话设计模式》Python版代码实现
- 大话设计模式之简单工厂模式代码
- 大话设计模式2 策略模式 的java代码实现
- 大话设计模式3 装饰模式 的java代码实现
- 大话设计模式4 代理模式 的java代码实现
- 大话设计模式之装饰模式代码实现-OC版
- WINDOWS XP下用grub_for_dos从硬盘安装FC6(linux)
- poj 3627
- SQL数据类型详解
- socket编程之初体验
- New Year, New Start
- C#大话设计模式代码
- .Net批量上传
- js
- 总结:DNS报文格式
- 值的注意的
- 浏览器中的clientHeight、offsetHeight和 scrollHeight
- objectARX 常用功能实现集合
- 百度招聘笔试考试题
- spring