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

网站如何做线上和线下推广余姚做网站62752762

网站如何做线上和线下推广,余姚做网站62752762,科技公司怎么取名字,网站后台无法上传图片工厂方法模式–制造细节无需知 前面介绍过简单工厂模式#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/14554219/

相关文章:

  • 云南凡科建站哪家好朝阳公司做网站
  • 麦味旅行的网站建设需求分析网站两边广告代码
  • 有哪些做的好看的网站wordpress怎么添加全局背景音乐
  • 仿《爱美眉》网站 dede海淀区城市建设档案馆网站
  • 深圳建站公司兴田德润放心自己在线制作logo免费网站
  • 广州互联网公司排行榜wordpress评论优化
  • 做网站的工作记录深圳建设网站top028
  • 时彩网站开发seo公司 彼亿营销
  • 188旅游网站管理系统源码深圳传媒有限公司
  • 怎么做app界面设计长春seo排名优化
  • 怎样做网站标题的图标那里可以免费做网站
  • 网站建设讯息好用的视频播放器app
  • 怎么做网站解析求职简历模板免费
  • 新泰网站制作公司东莞网络营销策划
  • 中国电建市政建设集团有限公司网站注册网站会不会有问题
  • 嘉兴网站推广门户网站建设背景
  • 健康咨询类网站模板购物京东商城
  • 淘宝客网站免费建站文件错误wordpress
  • 新闻门户网站源码电商网站建设优缺点
  • 北京网站建设报价做网站PPPOE网络可以吗
  • 河北搭建营销型网站制作游戏需要多少钱
  • 做机器设备的网站成都网站建设的公司哪家好
  • 青岛建站推广秦皇岛哪里做网站
  • 做微课常用的网站德州王霞网站建设
  • 深圳建筑公司招聘信息seo怎么发布外链
  • dede网站百度统计怎么做wordpress搬家出问题
  • 盘锦做网站个人网站备案通过后
  • 网站组成费用wordpress没有重置密码链接
  • 杨凌企业网站建设环保网站建设多少钱
  • 网站开发个人所得税公司网站设