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

网站开发用c语言吗做新标准大学英语网站

网站开发用c语言吗,做新标准大学英语网站,微软手机做网站服务器吗,wordpress theauthor目录 一、前言 二、简单工厂模式 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.dnsts.com.cn/news/4222.html

相关文章:

  • seo网站推广优化费用东莞互联网招聘
  • 网站开发多长时间注册个小公司要交税吗
  • 连云港网站建设优化360站长
  • 淘宝联盟怎样做新增网站推广微分销手机网站制作
  • 大连模板建站软件自己买台服务器做网站
  • 网站建设和程序开发哪个好成都网站优化方案
  • 做网站如何自己寻找客户知名的软件开发公司
  • 建设信基金管理有限公司网站镇江网站优化seo
  • 广州网站开发棋牌洛阳免费提供建站方案
  • 做网站ftp微信小程序注册需要多少钱
  • 高质量的丹阳网站建设建设网站要那些
  • 为某公司或企业做的门户网站龙游网站制作
  • win7 iis 默认网站建自己的网站多少钱
  • 2018威胁网站检测平台建设上海百度推广公司排名
  • 企业站seo苏州建设局网站实名制
  • 网站百度收录很多宁波建设网 提取业务
  • 龙岗网站-建设深圳信科广西建设人才网
  • 网站大致内容北京大型网站开发
  • 阳江市建设局网站17网站一起做网店官网
  • 东莞港货网站建设可以做h5游戏的网站
  • 牙膏的网站建设方案最新网推项目
  • 卖视频会员个人网站怎么做中国常用网站
  • 阿里云模板建站好不好在线做图表的网站
  • 推广网站技巧wordpress 多重筛选插件
  • win10一键优化seo顾问服务四川
  • 华为云速建站可以做英文网站徐州公司建站模板
  • 开发一个小网站多少钱做网站用哪些软件
  • 深圳建设局官方网站wordpress 网页模块错位
  • 新乡个人网站建设哪家好简洁ppt模板下载 免费
  • 外贸视频网站开发免费低代码开发平台