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

顺德中小企业网站建设前端简历

顺德中小企业网站建设,前端简历,WordPress播放流媒体,合击版手游带月灵工厂方法模式–制造细节无需知 前面介绍过简单工厂模式#xff0c;简单工厂模式只是最基本的创建实例相关的设计模式。在真实情况下#xff0c;有更多复杂的情况需要处理。简单工厂生成实例的类#xff0c;知道了太多的细节#xff0c;这就导致这个类很容易出现难维护、灵…工厂方法模式–制造细节无需知 前面介绍过简单工厂模式简单工厂模式只是最基本的创建实例相关的设计模式。在真实情况下有更多复杂的情况需要处理。简单工厂生成实例的类知道了太多的细节这就导致这个类很容易出现难维护、灵活性差的问题。就像我们去饭店吃饭只需要付钱等成品不需要了解这盘菜是怎么做的如何加工的。 简单工厂 再来回顾下简单工厂模式的计算器功能的工厂类。 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; }客户端调用时 Operation operate OperationFactory.createOperate(strOperate); double result operate.getResult(numberA, numberB);当使用工厂方法模式实现 实际就是对简单工厂中的细节部分进行再封装让这个工厂类不需要知道很多的实现细节。是这样子吗体验一下子。 结构图如下 先构建一个工厂接口 public interface IFactory {Operation createOperation(); }然后加减乘除的工厂都去实现这个接口并实现自己的createOeration()方法 // 加法工厂 public class AddFactory implements IFactory {Overridepublic Operation createOperation() {return new Add();} }// 减法工厂 public class SubFactory implements IFactory {Overridepublic Operation createOperation() {return new Sub();} }// 乘法工厂 public class MulFactory implements IFactory {Overridepublic Operation createOperation() {return new Mul();} }// 除法工厂 public class DivFactory implements IFactory {Overridepublic Operation createOperation() {return new Div();} }那么在对外工厂类中就可以这么实现 public class OperationFactory {public static Operation createOperate(String operate) {Operation oper null;IFactory factory null;switch (operate) {case :factory new AddFactory();break;case -:factory new SubFactory();break;case *:factory new MulFactory();break;case /:factory new DivFactory();break;}oper factory.createOperation();return oper;}}当我需要增加新的运算功能时需要增加运算类运算工厂类一下增加了好几个类这样是不是变得更麻烦了 简单工厂VS工厂方法 简单工厂模式的最大优点在于工厂类中包含必要的逻辑判断根据客户端的选择条件动态实例化相关的类对于客户端来说去除了与具体产品的依赖。 就像计算器工厂类客户端只需要传入一个或别的就能得到想要的功能算法。 但是当我们继续增加计算器功能时比如增加一个指数运算增加一个对数运算要去不断修改OperationFactory类就违背了开放-封闭原则。那我们该如何降低这种风险呢?就需要使用到工厂方法模式 我们应该尽量将长的代码分派切割成小段再将每一小段封装起来减少每段代码之间的耦合这样风险就分散了需要修改或扩展的难度就降低了。 再以计算器功能为例项目起初我们只知道加减乘除的功能那我们就可以将这四个功能定义为基础运算工厂也就是说前期功能是确定的作为基础功能我们就没有必要给加减乘除类增加冗余的工厂了。 后来增加了指数、对数运算我们定义为高级运算工厂。 那么其实并不是如上面的代码所讲加减乘除功能每一个功能需要一个工厂类。而是将加减乘除用一个基础工厂来创建而后面增加新的产品功能又不想影响原有的工厂代码于是就扩展一个新的工厂来处理即可。 工厂方法模式定义一个用于创建对象的接口让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到子类 修改结构图: 新增两个运算类(指数和对数) // 指数 public class Pow extends Operation {Overridepublic double getResult(double numberA, double numberB) {return Math.pow(numberA, numberB);} }// 对数运算 public class Log extends Operation {Overridepublic double getResult(double numberA, double numberB) {return Math.log(numberB) / Math.log(numberA);} }工厂接口不变 public interface IFactory {Operation createOperation(String operType); }基础运算工厂类此类已经比较成熟稳定实现后应该封装到位不建议轻易修改此类 public class FactoryBase implements IFactory {Overridepublic Operation createOperation(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 FactoryAdvanced implements IFactory {Overridepublic Operation createOperation(String operType) {Operation oper null;switch (operType) {case pow:oper new Pow();break;case log:oper new Log();break;}return oper;} }那么最后一步就是对外工厂类根据传入的参数选择具体使用哪个工厂类。 public class OperationFactory {public static Operation createOperate(String operate) {Operation oper null;IFactory factory null;switch (operate) {case :case -:case *:case /:factory new FactoryBase();break;case pow:case log:factory new FactoryAdvanced();}oper factory.createOperation(operate);return oper;}}总结 工厂方法模式是简单工厂模式的进一步抽象和推广。工厂方法模式本质就是对获取对象过程的抽象。 对于复杂的参数的构造对象可以很好地对外层屏蔽代码的复杂性有很好的解耦能力。
http://www.hkea.cn/news/14326765/

相关文章:

  • 网站建设解决方案ppt模板企业网络营销方案
  • 传奇三端互通新开服网站四平公司做网站
  • 建站公司走量渠道网络服务器机柜厂家
  • 做封面的网站东莞智通人才最新招聘网
  • 苏州seo建站如何进行网站的推广
  • 网站引导动画怎么做的西安网站创建
  • 怎么在网站上面做悬浮广告一分钟新闻口播稿
  • 乐站_网站建设_自助建站电商创业需要多少资金
  • 厦门邮件网站响应式官方网站
  • 官网网站建设需求文档wordpress账户插件
  • 做淘宝用那些网站发货小程序开发平台哪家产品好
  • 廊坊营销网站团队天眼查app下载
  • 网站展示型广告案例解析天猫店买卖网站
  • 网站开发步骤说明书是什么有没有做会计的网站
  • 电子图书网站开发的目的邢台网站维护
  • 鄂尔多斯市建设厅网站网站建设手机端是什么意思
  • 上海市住房与城乡建设部网站门户网站软文
  • 如果制作一个自己的网站安庆网站建设专业
  • 汉南公司网站建设管理手机网站
  • 南宁做网站公司怎么建设两个大淘客网站
  • 免费qq空间访客网站湖南建设监理员报名网站
  • 简单的手机网站模板免费下载wordpress不知道用户名和密码
  • 广州网站推广解决方案wordpress教程帕兰
  • 河南网站营销seo电话兰州网站卡法
  • 做电影网站赚钱知乎政务网站建设模块
  • 蒙狼科技建设网站好不好网站空间多少
  • 做全景效果图的网站ppt课件免费下载的网站
  • 网站技术方案说明为网站吸引流量的方法
  • 做调查挣钱的网站茂名网站开发
  • 简单公司网站新的东莞网站制作公司