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

建设银行的网站为什么登不上公司员工培训方案

建设银行的网站为什么登不上,公司员工培训方案,做笑话网站赚钱,wordpress 文章备份目录 一、前言 二、简单工厂模式 1、计算器例子 2、优化后版本 3、结合面向对象进行优化#xff08;封装#xff09; 3.1、Operation运算类 3.2、客户端 4、利用面向对象三大特性#xff08;继承和多态#xff09; 4.1、Operation类 4.2、加法类 4.3、减法类 4…目录 一、前言 二、简单工厂模式 1、计算器例子 2、优化后版本 3、结合面向对象进行优化封装 3.1、Operation运算类 3.2、客户端 4、利用面向对象三大特性继承和多态 4.1、Operation类 4.2、加法类 4.3、减法类 4.4、乘法类 4.5、除法类 4.6、简单工厂 4.7、客户端 5、简单工厂模式优点 6、简单工厂模式缺点 三、总结 一、前言 简单工厂模式不属于GoF23种设计模式之一但是实际中用途广泛并且可以作为学习“工厂方法模式”以及“抽象工厂模式”的基础。在简单工厂模式中工厂类提供一个创建产品的工厂方法用于创建各种产品。客户端只需传入对应的参数利用该方法即可根据传入参数的不同返回不同的具体产品对象。 二、简单工厂模式 简单工厂模式Simple Factory Pattern定义一个工厂类它可以根据参数的不同返回不同类的实例被创建的实例通常都具有共同的父类。 因为在简单工厂模式用于创建实例的方法是静态的方法因此简单工厂模式又被称为静态工厂方法模式它属于类创建型模式。 在介绍简单工厂之前先来看一个简单的计算器小栗子。 1、计算器例子 public static void main(String[] args) {Scanner scanner new Scanner(System.in);System.out.println(请输入数字A);String A scanner.nextLine();System.out.println(请选择运算符号(、-、*、/));String B scanner.nextLine();System.out.println(请输入数字B);String C scanner.nextLine();String D ;if(B ){D String.valueOf(Double.parseDouble(A) Double.parseDouble(C));}if(B -){D String.valueOf(Double.parseDouble(A) - Double.parseDouble(C));}if(B *){D String.valueOf(Double.parseDouble(A) * Double.parseDouble(C));}if(B /){D String.valueOf(Double.parseDouble(A) / Double.parseDouble(C));}System.out.println(运算结果D); } 这段代码存在的问题 这样命名是非常不规范的。像A、B、C、D这些别人扎眼一看肯定不知道这是在做什么。判断分支这样的写法意味着每个条件都要做判断等于计算机做了三次无用功。如果除数时客户输入了0怎么办如果用户输入的是字符符号而不是数字怎么办。 2、优化后版本 public static void main(String[] args) {try {Scanner scanner new Scanner(System.in);System.out.println(请输入数字A);String numberA scanner.nextLine();System.out.println(请选择运算符号(、-、*、/));String operate scanner.nextLine();System.out.println(请输入数字B);String numberB scanner.nextLine();String result ;switch (operate ){case :result String.valueOf(Double.parseDouble(numberA) Double.parseDouble(numberB));break;case -:result String.valueOf(Double.parseDouble(numberA) - Double.parseDouble(numberB));break;case *:result String.valueOf(Double.parseDouble(numberA) * Double.parseDouble(numberB));break;case/:if (numberB ! 0){result String.valueOf(Double.parseDouble(numberA) / Double.parseDouble(numberB));}else{result 除数不能为0;}break;}System.out.println(运算结果result);}catch (Exception e){System.out.println(e);}} 可以看到这一版中优化了变量的命名将if判断更换成了switch case语句增加了除数判断是否为0。 3、结合面向对象进行优化封装 3.1、Operation运算类 public class Operation {public static String getResult(double numberA, double numberB, String operate){String result ;switch (operate){case :result String.valueOf(numberA numberB);break;case -:result String.valueOf(numberA -numberB);break;case *:result String.valueOf(numberA * numberB);break;case/:if (numberB ! 0){result String.valueOf(numberA / numberB);}else{result 除数不能为0;}break;}return result;} } 3.2、客户端 public class Program {public static void main(String[] args) {try {Scanner scanner new Scanner(System.in);System.out.println(请输入数字A);String numberA scanner.nextLine();System.out.println(请选择运算符号(、-、*、/));String operate scanner.nextLine();System.out.println(请输入数字B);String numberB scanner.nextLine();String result ;Operation.getResult(Double.parseDouble(numberA), Double.parseDouble(numberB),operate);System.out.println(运算结果result);}catch (Exception e){System.out.println(e);}} } 4、利用面向对象三大特性继承和多态 4.1、Operation类 public abstract class Operation {private double numberA;private double numberB;public double getNumberA() {return numberA;}public void setNumberA(double numberA) {this.numberA numberA;}public double getNumberB() {return numberB;}public void setNumberB(double numberB) {this.numberB numberB;}public abstract double getResult() throws Exception; } 4.2、加法类 public class OperationAdd extends Operation{Overridepublic double getResult() {return getNumberA()getNumberB();} } 4.3、减法类 public class OperationSub extends Operation{Overridepublic double getResult() {return getNumberB() - getNumberB();} } 4.4、乘法类 public class OperationMul extends Operation{Overridepublic double getResult() {return getNumberA() * getNumberB();} } 4.5、除法类 public class OperationDiv extends Operation{Overridepublic double getResult() throws Exception {if (getNumberB() ! 0){return getNumberA() / getNumberB();}throw new Exception(除数不能为0);} } 4.6、简单工厂 public class OperationFactory {public static Operation createOperate(String operate){Operation operation null;switch (operate){case :operation new OperationAdd();break;case -:operation new OperationSub();break;case *:operation new OperationMul();break;case/:operation new OperationDiv();break;}return operation;} } 4.7、客户端 public class Program {public static void main(String[] args) throws Exception {Operation operation;operation OperationFactory.createOperate();operation.setNumberA(2);operation.setNumberB(4);double result operation.getResult();System.out.println(result);} } 5、简单工厂模式优点 1、工厂类含有必要的判断逻辑可以决定在什么时候创建哪一个产品类的实例客户端可以免除直接创建产品对象的责任而仅仅“消费”产品简单工厂模式通过这种做法实现了对责任的分割它提供了专门的工厂类用于创建对象。 2、客户端无须知道所创建的具体产品类的类名只需要知道具体产品类所对应的参数即可对于一些复杂的类名通过简单工厂模式可以减少使用者的记忆量。 3、通过引入配置文件可以在不修改任何客户端代码的情况下更换和增加新的具体产品类在一定程度上提高了系统的灵活性。 6、简单工厂模式缺点 1、由于工厂类集中了所有产品创建逻辑一旦不能正常工作整个系统都要受到影响。 2、使用简单工厂模式将会增加系统中类的个数在一定程序上增加了系统的复杂度和理解难度。 3、系统扩展困难一旦添加新产品就不得不修改工厂逻辑在产品类型较多时有可能造成工厂逻辑过于复杂不利于系统的扩展和维护。 4、简单工厂模式由于使用了静态工厂方法造成工厂角色无法形成基于继承的等级结构。 三、总结 使用了简单工厂之后如果有一天我们需要更改假发运算只需要更改OperationAdd就可以了如果需要增加各种复杂运算例如平方根、自然对数、正弦等需要增加相应的运算子类修改运算类工厂在switch中增加分支来看一下简单工厂的类结构。
http://www.pierceye.com/news/150031/

相关文章:

  • 网站形式wordpress 顶部工具栏
  • 网站前后台修改wordpress用户密码
  • 微信 公司网站 怎么做手机端视频网站模板下载
  • 何为响应式网站太原自助建站
  • 网站建设方案书怎么写安徽和住房建设厅网站
  • 北京市住房和城乡建设厅官方网站重庆百度seo整站优化
  • 备案ip 查询网站查询网站河南建筑职业技术学院
  • 均安公司网站建设免费建手机个人网站
  • 南京做网站的网络公司排名wordpress发邮件更新
  • 抽奖的网站怎么做美食类网站模板
  • 自己建一个网站难吗网络安全行业公司排名
  • 做招聘的h5用哪个网站企业网站需要多大空间
  • 织梦 公司网站模板html5网站开发的源码
  • 晋江网站建设公司电脑培训网
  • 电子商务网站开发的题网站关键词排名怎么提升
  • 在百度网站备案查询上显示未备案是什么意思wordpress资源分享主题
  • 夏县做网站郑州做商城网站
  • 网站首页推荐网络服务提供者发现用户利用其网络服务对未成年
  • 中外网站建设区别微信软文是什么意思
  • 苏州网站建设极简幕枫卫浴网站建设
  • 优秀企业网站欣赏网站的备案怎么处理
  • 怎样做古玩网站毕业设计开题报告网站开发
  • 西安网站 建设app注册推广
  • 丹徒网站建设公司代理公司注册价格
  • 网站建站建设网站中国商标商标查询网
  • 机械加工网站平台南京app制作开发公司
  • 用vs2008做网站教程seo推广网址
  • 正规制作网站公司哪家好视觉传达设计专业作品集
  • 做网站多少钱特惠西宁君博s网站网站建设多少钱
  • 建筑模版东莞网站建设技术支持手机网站开发学习