当前位置: 首页 > news >正文

网页设计图片与文字的研究百度网站优化 件

网页设计图片与文字的研究,百度网站优化 件,地产公司做网站维护写代码么6,wordpress升级后等待简单工厂模式描述的是#xff0c;通过类的继承关系#xff0c;父类#xff08;工厂类#xff09;与子类#xff08;产品类#xff09;#xff0c;调用父类中的方法#xff0c;实际干活儿的是子类中的方法#xff1b;封装需求的不确定性#xff0c;做出通用的编程通过类的继承关系父类工厂类与子类产品类调用父类中的方法实际干活儿的是子类中的方法封装需求的不确定性做出通用的编程下面以常用的计算器为例 最容易想到的写法是 1 Console.WriteLine(请输入操作数1);2 double a double.Parse(Console.ReadLine());3 Console.WriteLine(请输入操作符);4 string opt Console.ReadLine();5 Console.WriteLine(请输入操作数2);6 double b double.Parse(Console.ReadLine());7 8 double result 0;9 10 switch (opt) 11 { 12 case : 13 result a b; 14 break; 15 case -: 16 result a - b; 17 break; 18 case *: 19 result a * b; 20 break; 21 case /: 22 if (b 0) 23 { 24 throw new Exception(被除数不能为0); 25 } 26 result a / b; 27 break; 28 } 29 Console.WriteLine(计算结果是result); 这么写对于控制台来说基本够用了但是它有很多的弊病 1.计算结果是直接输出到控制台如果要做一个WinForm版呢目前只有重新写一遍不能够重用 2.这里的case只考虑了基本的四则运算业务变更后如果有求平方、求立方、开方等运算呢那么只能去改写好的方法一个项目中只有一处还好说如果有多处要修改那就麻烦了可扩展性太差3.这段代码也没有体现面向对象的3大特性封装、继承、多态。 基于以上的种种弊端需要修改代码 首先定义一个父类Operat在类中不考虑未来是否有四则运算及怎样运算 Operat类 1 /// summary2 /// 父类计算方法3 /// /summary4 public class Operat5 {6 public double NumberA { get; set; }7 public double NumberB { get; set; }8 /// summary9 /// 构造函数 10 /// /summary 11 /// param namea/param 12 /// param nameb/param 13 public Operat(double a,double b) 14 { 15 this.NumberA a; 16 this.NumberB b; 17 } 18 19 public virtual double Oper() 20 { 21 double result 0; 22 return result; 23 } 24 } 只定义了2个操作数和一个计算方法虚方法因为这里不知道未来有几个运算 再定义一个加法类OperatAdd来继承它并实现父类中的计算方法 OperatAdd类加法 1 class OperatAdd : Operat2 {3 //构造函数4 public OperatAdd(double a,double b):base(a,b)5 {6 7 }8 /// summary9 /// 子类重写父类的Oper方法实现 10 /// /summary 11 /// returns/returns 12 public override double Oper() 13 { 14 double result 0; 15 result NumberA NumberB; 16 return result; 17 } 18 } 依次定义后面的3个类减、乘、除 OperatSub类减法 1 class OperatSub : Operat2 {3 public OperatSub(double a,double b):base(a,b)4 {5 6 }7 public override double Oper()8 {9 double result 0; 10 result NumberA - NumberB; 11 return result; 12 } 13 } OperatMult类乘法 1 class OperatMult:Operat2 {3 public OperatMult(double a,double b):base(a,b)4 {5 6 }7 public override double Oper()8 {9 double result 0; 10 result NumberA * NumberB; 11 return result; 12 } 13 } OperatVision类除法 1 class OperatVision:Operat2 {3 public OperatVision(double a,double b):base(a,b)4 {5 6 }7 public override double Oper()8 {9 double result 0; 10 if (NumberB0) 11 { 12 throw new Exception(被除数不能为0); 13 } 14 result NumberA / NumberB; 15 return result; 16 } 17 } 这时候应该考虑的问题是在业务中怎样调用这4个子类中的运算方法简单工厂 定义一个工厂类由工厂类根据具体业务去调用具体的子类产品类 1 /// summary2 /// 工厂类3 /// /summary4 public class OperatFactory5 {6 public Operat JiSuan(double a, string opt, double b)7 {8 Operat opt1 null;9 //封装了异同业务需求的差异 10 switch (opt) 11 { 12 case : 13 opt1 new OperatAdd(a, b); //产品1加法 14 break; 15 case -: 16 opt1 new OperatSub(a, b); //产品2减法 17 break; 18 case *: 19 opt1 new OperatMult(a, b); //产品3乘法 20 break; 21 case /: 22 opt1 new OperatVision(a, b); //产品4除法 23 break; 24 } 25 return opt1; //返回父类对象 26 } 27 } 给opt赋不同的运算工厂类就会去调用相应的子类执行计算方法new出相应的产品类因为子类中都只是 return result;没有考虑这个结果具体显示在那个地方控制台还是winform中的label就变得相当灵活了并返回父类对象。 控制台去使用时调用工厂类中JiSuan方法返回父类对象即可 1 Console.WriteLine(请输入操作数1);2 double a double.Parse(Console.ReadLine());3 Console.WriteLine(请输入操作符);4 string opt Console.ReadLine();5 Console.WriteLine(请输入操作数2);6 double b double.Parse(Console.ReadLine());7 8 OperatFactory factory new OperatFactory();9 Operat opt1 factory.JiSuan(a, opt, b); 10 Console.WriteLine(计算结果是{0}, opt1.Oper()); 11 Console.ReadKey(); 而winform的代码也很类似 1 lbResult.Text ;2 3 lbResult.ForeColor Color.Red;4 lbResult.Font new Font(宋体, 12);5 double a double.Parse(txtNumber1.Text.Trim());6 string opt cmbOperat.SelectedItem.ToString();7 double b double.Parse(txtNumber2.Text.Trim());8 9 OperatFactory factory new OperatFactory(); 10 Operat oper factory.JiSuan(a, opt, b); 11 lbResult.Text oper.Oper().ToString(); 可以看出上面2段代码的第二段几乎是一样的代码就足够通用了。      转载于:https://www.cnblogs.com/chens2865/p/3732071.html
http://www.huolong8.cn/news/212515/

相关文章:

  • 网站怎么增加关键词库在线购物网站建设的需求分析
  • 建网站的宽带多少wordpress 算数 验证码
  • 书怎么做pdf下载网站填空秒懂网站
  • 网站建设 中企动力医院淘客怎么做网站
  • 做网站要什么条件哈尔滨网站网站建设
  • 莘县住房建设局网站电脑做网页用什么软件
  • 虚拟主机安装网站网站备案注意事项
  • 乐昌北京网站建设移动互联网开发技术题库
  • 小型网站开发时间周期郑州做网站的
  • 网站有了域名后怎么还上不了wordpress tag标签
  • 阿里云自助建站互联网优化营销
  • 建设一个充电站需要多少钱注册电子邮箱号
  • 学校网站建设运行简介河北省最新任免
  • 免费空间网站php搜索框html代码
  • 内部网站搭建网站备案号的区别
  • 国内快速建站可信赖的大良网站建设
  • 颍州网站建设ueditor wordpress 插件
  • 高新手机网站建设公司杭州高瑞网站建设
  • 帮人做网站在徐州被敲诈五万景观设计师证怎么考
  • 网站建设属于什么行业分类做博客网站
  • 莱州网站建设青岛华夏商务网wordpress支付宝流程
  • 虚拟主机不能通过什么架设网站linuxvps建站教程
  • 沙井网站推广南京建设网站需要多少钱
  • 制作网页网站代码电子商务是什么
  • 做视频上传多少个网站推广页面
  • 嘉兴手机模板建站福田网站建设-信科网络
  • 网站 系统设置邯郸市天气预报
  • 网站建设与维护中职wordpress加动效
  • 英文网站建站模板网站首页为什么不收录
  • 深圳建设局网站wordpress教程php二次开发