设计模式03 简单的工程设计模
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 设计模式02
{
class Program
{
static void Main(string[] args)
{
//一个商场的收银系统
MainFunction lp_a = new MainFunction();
Console.ReadLine();
}
}
//现金收费抽象类
abstract class CashSuper
{
public abstract double acceptCash(double money);
}
//正常的收费
class CashNormaI : CashSuper
{
public override double acceptCash(double money)
{
return money ;
}
}
//打折的收费
class CashRebate : CashSuper
{
private double moneyRebate = 1d; //打折的折扣率
public CashRebate(string moneyRebate) //构造函数
{
this.moneyRebate = double.Parse(moneyRebate) ;
}
public override double acceptCash(double money) //对收费进行打折
{
return money * moneyRebate;
}
}
//满减的收费
class CashReturn : CashSuper
{
private double lpMoneyCondtion = 0d;
private double lpMoneyReturn = 0d;
public CashReturn(string moneyCondtion , string moneyReturn)
{
this.lpMoneyCondtion = double.Parse(moneyCondtion);
this.lpMoneyReturn = double.Parse(moneyReturn);
}
public override double acceptCash(double money)
{
if (money > this.lpMoneyCondtion)
{
return money - lpMoneyReturn ;
}
else
{
return money ;
}
}
}
//一个简单的收费工程类
class CashFactary
{
public static CashSuper CreateCashSuper (string type)
{
CashSuper lpReturnCsahSuper = null;
switch (type)
{
case "正常收费":
{
lpReturnCsahSuper = new CashNormaI();
break;
}
case "满300减100":
{
lpReturnCsahSuper = new CashReturn("300", "100");
break;
}
case "打8折":
{
lpReturnCsahSuper = new CashRebate("0.8");
break;
}
}
return lpReturnCsahSuper;
}
}
//客户端程序
class MainFunction
{
public MainFunction()
{
Console.WriteLine("选择你的收费类型 :");
Console.WriteLine(" 1. 正常收费");
Console.WriteLine(" 2. 满减收费");
Console.WriteLine(" 3. 打折收费");
string numberForClose = "";
numberForClose = Console.ReadLine();
string lpChoiceType = "";
switch(numberForClose)
{
case "1":
{
lpChoiceType = "正常收费";
break;
}
case "2":
{
lpChoiceType = "满300减100";
break;
}
case "3":
{
lpChoiceType = "打8折";
break;
}
}
CashSuper lpObject = null;
lpObject = CashFactary.CreateCashSuper(lpChoiceType);
Console.WriteLine("输入你的金额 :");
string numberOfMoney = "";
numberOfMoney = Console.ReadLine();
double returnNumber = 0d;
returnNumber = lpObject.acceptCash(double.Parse(numberOfMoney));
Console.WriteLine("应收现金 : " + returnNumber);
}
}
}