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

2017国外优秀网站设计网站搜索功能怎样做

2017国外优秀网站设计,网站搜索功能怎样做,做电商引流软文网站,上海建设工程安全质量监督站网站简单工厂模式 ​ 前面也学了很多各种微服务架构的组件#xff0c;包括后续的服务部署、代码管理、Docker等技术#xff0c;那么作为后端人员#xff0c;最重要的任务还是代码编写能力#xff0c;如何让你的代码写的漂亮、易扩展#xff0c;让别人一看赏心悦目#xff0c…简单工厂模式 ​ 前面也学了很多各种微服务架构的组件包括后续的服务部署、代码管理、Docker等技术那么作为后端人员最重要的任务还是代码编写能力如何让你的代码写的漂亮、易扩展让别人一看赏心悦目那么设计模式就是很重的了。那么本本篇文章就来聊聊一个简单的工厂模式。 缘起 ​ 一个22岁刚毕业的大学生A计算机专业学的Java语言到B公司面试。而面试题非常简单实现一个简易计算器的功能A觉得面试题很简单三下五除二直接10分钟完事儿了。然而交卷后迟迟等不到B公司的通知多半是凉了那么他是怎么实现的呢代码如下 public class Test {public static void main(String[] args) {Scanner sc new Scanner(System.in);System.out.println(请输入数字A);String A sc.nextLine();System.out.println(请选择运算符(、-、*、/));String B sc.nextLine();System.out.println(请输入数字B);String C sc.nextLine();double D 0d;if (B.equals()) D Double.parseDouble(A) Double.parseDouble(C);if (B.equals(-)) D Double.parseDouble(A) - Double.parseDouble(C);if (B.equals(*)) D Double.parseDouble(A) * Double.parseDouble(C);if (B.equals(/)) D Double.parseDouble(A) / Double.parseDouble(C);System.out.println(结果是 D);}}那么就以上的代码按功能来说有问题吗 没问题功能确实实现了但是细看就会发现代码规范及其他的问题 变量名命名问题ABCD?if判断问题假如输入的是号那么其他的判断还有必要再去执行吗没必要输入的不是数字时怎么处理 那么按照上面的问题依次去改动代码 public class Test {public static void main(String[] args) {try {Scanner sc new Scanner(System.in);System.out.println(请输入数字A);double numberA Double.parseDouble(sc.nextLine());System.out.println(请选择运算符(、-、*、/));String strOperate sc.nextLine();System.out.println(请输入数字B);double numberB Double.parseDouble(sc.nextLine());double result 0d;switch (strOperate) {case :result numberA numberB;break;case -:result numberA - numberB;break;case *:result numberA * numberB;break;case /:result numberA / numberB;break;}System.out.println(结果是 result);} catch (Exception e) {System.out.println(您的输入有误 e.getMessage());}}}行了代码规范的问题是都已经完善了。 那么如何提高代码的可维护、可扩展、可复用、灵活性更好呢 答案就是面向对象。 业务的封装 准确的说就是让业务逻辑和界面逻辑分开让它们之间的耦合度下降只有分离开才可以达到容易维护和扩展。 增加一个运算类 public class Operation {public static double getResult(double numberA, double numberB, String operate) {double result 0d;switch (operate) {case :result numberA numberB;break;case -:result numberA - numberB;break;case *:result numberA * numberB;break;case /:result numberA / numberB;break;}return result;}}那么客户端Test的代码 public class Test {public static void main(String[] args) {try {Scanner sc new Scanner(System.in);System.out.println(请输入数字A);double numberA Double.parseDouble(sc.nextLine());System.out.println(请选择运算符(、-、*、/));String strOperate sc.nextLine();System.out.println(请输入数字B);double numberB Double.parseDouble(sc.nextLine());double result Operation.getResult(numberA, numberB, strOperate);System.out.println(结果是 result);} catch (Exception e) {System.out.println(您的输入有误 e.getMessage());}}}业务逻辑和界面逻辑都分离开了那么这种方案就是面向对象的封装三大特性之一。 增加功能 计算器的功能发生改变了不仅要支持-*/我还想要加一个平方根运算那我们就需要去修改Operation类中的代码 public class Operation {public static double getResult(double numberA, double numberB, String operate) {double result 0d;switch (operate) {case :result numberA numberB;break;case -:result numberA - numberB;break;case *:result numberA * numberB;break;case /:result numberA / numberB;break;case pow:result Math.pow(numberA, numberB);break;}return result;} }那么问题来了我这里是加了一个pow的case分支加一个平方根运算的功能但是却需要让加减乘除的运算全都得来参与编译万一一个不小心把加法运算改成减法了又没有注意到直接给上生产环境了这之后造成的问题能承担的了吗 那么我们为了增加功能而不让其他已经存在的功能有代码误改的风险。继续对业务方法进行改进. 我们将Operation类置为抽象类让其他的加减乘除继承它并且每一个功能都是一个单独的类实现自己的业务逻辑 public abstract class Operation {public double getResult(double numberA, double numberB) {return 0d;} }加减乘除类 public class Add extends Operation { // 加Overridepublic double getResult(double numberA, double numberB) {return numberA numberB;} }public class Sub extends Operation { // 减Overridepublic double getResult(double numberA, double numberB) {return numberA - numberB;} }public class Mul extends Operation { // 乘Overridepublic double getResult(double numberA, double numberB) {return numberA * numberB;} }public class Div extends Operation { // 除Overridepublic double getResult(double numberA, double numberB) {if (numberB 0) {System.out.println(除数不能为0);throw new RuntimeException();}return numberA / numberB;} }实现简单工厂 上面抽象出来一个操作类(Operation)并且有加减乘除的业务逻辑类那么我如何得知应该用哪个业务逻辑类呢 这时候我们就需要一个工厂类工厂顾名思义就是用来加工的我把原料放进去工厂给我生产出来产品。 public class OperationFactory { public static Operation createOperate(String operate) {Operation oper null;switch (operate) {case :oper new Add();break;case -:oper new Sub();break;case *:oper new Mul();break;case /:oper new Div();break;}return oper;} }客户端这里调用时 public class Test {public static void main(String[] args) {try {Scanner sc new Scanner(System.in);System.out.println(请输入数字A);double numberA Double.parseDouble(sc.nextLine());System.out.println(请选择运算符(、-、*、/));String strOperate sc.nextLine();System.out.println(请输入数字B);double numberB Double.parseDouble(sc.nextLine());Operation operate OperationFactory.createOperate(strOperate);double result operate.getResult(numberA, numberB);System.out.println(结果是 result);} catch (Exception e) {System.out.println(您的输入有误 e.getMessage());}}}上面就是大致的结构图当我们再次增加新的功能时只需要去集成Operation运算类然后实现自己的业务逻辑就可以了看起来是不是比原先的一坨代码更加一目了然了并且也提高了它的复用性、维护性、扩展性也更加灵活了。
http://www.hkea.cn/news/14293227/

相关文章:

  • 黄石网站设计制作建门户网站哪家最好
  • wordpress英文站群舟山网络公司网站建设公司
  • 提高网站seowordpress怎么弄背景
  • 企业网站宣传视频外链纺织服装网站建设规划方案
  • 网站备案号要怎么查询资讯网站建设流程
  • 怎么在网站上放广告怀化买房网站
  • 欧美做爰视频网站做模版的网站
  • ps怎么做响应式网站布局图最新国际局势新消息
  • 找人网站o2o是指的是什么
  • 百度网站名称及网址wordpress短码
  • 泊头网站建设价格张家港市住房和城乡建设局网站
  • 网站前台建设需要哪些技术知识网页设计与制作100例怎么写
  • 网站开发需要哪些证书免费建站哪个好
  • 网站建设补贴网站服务器关闭怎么恢复
  • 帮传销做网站违法吗填空秒懂网站
  • 厦门网站建设屈兴东网站建设所有权
  • 网站建设价格多少钱免费观看行情软件
  • 电子商务网站建设与维护致谢词佛山网站制作网站设计
  • 成都网站制作是什么广州网站优
  • 快速做网站流量数据统计分析wordpress建设企业网站
  • 徐州市住房和城乡建设局网站首页邯郸房产网签查询网
  • 漳州正规网站建设做网站九州科技
  • 无锡网站建设书生商友福建省建设注册执业管理中心网站
  • 仿网站源码湖南公司网站建设
  • 为什么网站很少做全屏办公室装修费计入什么费用
  • 网站建设找哪家公司好慈利网站建设
  • 哪里创建免费个人网站什么是营销
  • 编程网站编程专业做网站建设公司怎么样
  • 创客贴网站做海报技能黑龙江公司网站建设
  • 做网站公司汉狮团队如何开发自己的app