设计模式.简单工厂模式(SimpleFactory).pptx
《设计模式.简单工厂模式(SimpleFactory).pptx》由会员分享,可在线阅读,更多相关《设计模式.简单工厂模式(SimpleFactory).pptx(35页珍藏版)》请在三一办公上搜索。
1、设计模式(Design Pattern),张凯 副教授计算机学院 软件工程系,问题(Problem),实现控制台计算器利用任意一种面向对象的语言要求输入2个数和运算符,得到结果,问题(Problem),static void Main(string args)Console.Write(请输入数字A:);string strNumberA=Console.ReadLine();Console.Write(请选择运算符号(+、-、*、/):);string strOperate=Console.ReadLine();Console.Write(请输入数字B:);string strNumberB
2、=Console.ReadLine();string strResult=;switch(strOperate)case+:strResult=(double.Parse(strNumberA)+double.Parse(strNumberB).ToString();break;case-:strResult=(double.Parse(strNumberA)-double.Parse(strNumberB).ToString();break;case*:strResult=(double.Parse(strNumberA)*double.Parse(strNumberB).ToString(
3、);break;case/:if(strNumberB!=0)strResult=(double.Parse(strNumberA)/double.Parse(strNumberB).ToString();else strResult=除数不能为0;break;Console.WriteLine(结果是:+strResult);Console.ReadLine();,问题(Problem),原来的代码可复用吗?,问题(Problem),实现计算器Ctrl+C 和 Ctrl+V维护的时候,带来灾难尽可能的办法去避免重复通过面向对象设计,让数据计算和用户交互方式分开,问题(Problem),cla
4、ss Operation public static double GetResult(double numberA,double numberB,string operate)double result=0;switch(operate)case+:result=numberA+numberB;break;case-:result=numberA-numberB;break;case*:result=numberA*numberB;break;case/:result=numberA/numberB;break;return result;,问题(Problem),问题(Problem),s
5、tatic void Main(string args)try Console.Write(请输入数字A:);string strNumberA=Console.ReadLine();Console.Write(请选择运算符号(+、-、*、/):);string strOperate=Console.ReadLine();Console.Write(请输入数字B:);string strNumberB=Console.ReadLine();string strResult=;strResult=Operation.GetResult(double.Parse(strNumberA),doubl
6、e.Parse(strNumberB),strOperate).ToString();Console.WriteLine(结果是:+strResult);Console.ReadLine();catch(Exception ex)Console.WriteLine(您的输入有错:+ex.Message);,问题(Problem),private void button8_Click(object sender,EventArgs e)if(bOperate)textBox1.Text=;bOperate=false;textBox1.Text=textBox1.Text+(Button)sen
7、der).Text;private void button14_Click(object sender,EventArgs e)if(textBox1.Text!=)operate=(Button)sender).Text;numberA=double.Parse(textBox1.Text);bOperate=true;private void button17_Click(object sender,EventArgs e)if(textBox1.Text!=)numberB=double.Parse(textBox1.Text);textBox1.Text=Operation.GetRe
8、sult(numberA,numberB,operate).ToString();bOperate=true;,bool bOperate=false;double numberA=0;double numberB=0;string operate=;,问题(Problem),这种改变很有效,体现了面向对象的重要原则之一,单一职责原则,问题(Problem),添加平方根运算,问题(Problem),class Operation public static double GetResult(double numberA,double numberB,string operate)double
9、result=0;switch(operate)case+:result=numberA+numberB;break;case-:result=numberA-numberB;break;case*:result=numberA*numberB;break;case/:result=numberA/numberB;break;return result;,问题(Problem),紧耦合 vs 松耦合Switch中添加一个分支,搞定!思考:运算+-*/的代码GetResult是正确的,却需要在修改的时候暴露?如何修改或添加新运算,不影响其它的运算代码?,违背面向对象设计原则:开放封闭原则,问题(
10、Problem),class Operation public static double GetResult(double numberA,double numberB,string operate)double result=0;switch(operate)case+:result=numberA+numberB;break;case-:result=numberA-numberB;break;case*:result=numberA*numberB;break;case/:result=numberA/numberB;break;return result;,面向对象三大特性:继承、封
11、装、多态,问题(Problem),class Operation private double _numberA=0;private double _numberB=0;public double NumberA get return _numberA;set _numberA=value;public double NumberB get return _numberB;set _numberB=value;public virtual double GetResult()return 0;,问题(Problem),/加法类 class OperationAdd:Operation publ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 模式 简单 工厂 SimpleFactory
链接地址:https://www.31ppt.com/p-6607374.html