05设计模式简单工厂模式(Simple Factory).ppt
《05设计模式简单工厂模式(Simple Factory).ppt》由会员分享,可在线阅读,更多相关《05设计模式简单工厂模式(Simple Factory).ppt(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、LOGO设计模式(Design Pattern)张凯 副教授计算机学院 软件工程系武汉科技大学问题(Problem)v实现控制台计算器 利用任意一种面向对象的语言 要求输入2个数和运算符,得到结果武汉科技大学问题(Problem)static void Main(string args)Console.Write(请输入数字A:);string strNumberA=Console.ReadLine();Console.Write(请选择运算符号(+、-、*、/):);string strOperate=Console.ReadLine();Console.Write(请输入数字B:);str
2、ing strNumberB=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(strNumb
3、erB).ToString();break;case/:if(strNumberB!=0)strResult=(double.Parse(strNumberA)/double.Parse(strNumberB).ToString();else strResult=除数不能为0;break;Console.WriteLine(结果是:+strResult);Console.ReadLine();武汉科技大学问题(Problem)原来的代码可复用吗?武汉科技大学问题(Problem)v实现计算器 Ctrl+C 和 Ctrl+V 维护的时候,带来灾难 尽可能的办法去避免重复 通过面向对象设计,让数据
4、计算和用户交互方式分开武汉科技大学问题(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 re
5、sult;武汉科技大学问题(Problem)武汉科技大学问题(Problem)static 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.
6、GetResult(double.Parse(strNumberA),double.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=f
7、alse;textBox1.Text=textBox1.Text+(Button)sender).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(
8、textBox1.Text);textBox1.Text=Operation.GetResult(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 GetResul
9、t(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)v紧耦合 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;
11、case/:result=numberA/numberB;break;return result;面向对象三大特性:继承、封装、多态武汉科技大学问题(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 GetRe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 05设计模式简单工厂模式Simple Factory 05 设计 模式 简单 工厂 Simple Factory
限制150内