设计模式03 简单的工厂设计模式 bylp

2019-04-13 17:22发布

设计模式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); } } }