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

专题类的网站做搜狗网站优化排名

专题类的网站,做搜狗网站优化排名,做经营性的网站备案条件,网站域名分类工厂设计模式属于创建型模式#xff0c;它提供了一种创建对象的最佳方式。工厂模式提供了一种创建对象的方式#xff0c;而无需指定要创建的具体类。工厂模式属于创建型模式#xff0c;它在创建对象时提供了一种封装机制#xff0c;将实际创建对象的代码与使用代码分离。 …工厂设计模式属于创建型模式它提供了一种创建对象的最佳方式。工厂模式提供了一种创建对象的方式而无需指定要创建的具体类。工厂模式属于创建型模式它在创建对象时提供了一种封装机制将实际创建对象的代码与使用代码分离。 面相对象编程中万物皆对象。每个对象如果都通过关键字new创建则会导致对象与其调用者耦合严重。假如更换要new的对象则所有new对象的地方都需要改变代码这显然违背了“开-闭原则”。如果使用工厂来生产对象我们只需要和工厂打交道彻底和对象解耦如果更换对象只需要在工厂里更换对象而不需要再所有的地方进行更换这样达到了与对象解耦的目的。工厂模式最大优点就是解耦。 简单工厂模式 简单工厂模式根据传入的参数决定创建哪个类型的实例。简单工厂模式本着高内聚低耦合的原则将系统的逻辑部分和功能分开。 使用场景  首先当然是在你需要new一个类的对象的时候此时各种状况出现啦 你不想直接new这个类的对象怕以后这个类改变的时候你需要回来改代码而此时依赖这个类的地方已经到处都是了。这个类的对象构建过程非常复杂你不愿意将这么复杂的构建过程一遍又一遍的写在需要用到此对象的地方。这个类的对象在构建过程中依赖了很多其他的类而你无法在调用的地方提供 JDK源码中的 Calendar.getInstance()方法。Logback源码中多个重载的 getLogger()方法。 QQ 换皮肤一整套一起换。 生成不同操作系统的程序。 简单工厂模式的3个角色  对象工厂SimpleFactory负责实现创建所有产品实例的内部逻辑。抽象产品即要生产的对象的接口描述所有实例要实现的公共接口。具体产品即创建的产品实例。所有创建的实例都是抽象产品的具体实现。 结构图 优缺点 优点 结构简单调用方便。工厂和产品的职责区分明确。客户端无需知道所创建具体产品的类名只需知道参数即可。 缺点 简单工厂模式的工厂类单一负责所有产品的创建职责过重一旦异常整个系统将受影响。违背“开放-关闭原则”一旦添加新产品就必须修改简单工厂类的内部逻辑工厂类代码会非常臃肿违背高聚合原则。简单工厂模式使用了静态工厂方法静态方法不能被继承和重写造成工厂角色无法形成基于继承的等级结构。 应用实例  简易计算器为例需求输入两个数和运算符得到结果。 抽象产品 public abstract class Operation {protected abstract double compute (double number1, double number2) throws Exception; }具体产品 // 加法 public class OperationAdd extends Operation{Overrideprotected double compute(double number1, double number2) {return number1 number2;} }// 减法 public class OperationSub extends Operation{Overrideprotected double compute(double number1, double number2) {return number1 - number2;} }// 乘法 public class OperationMul extends Operation{Overrideprotected double compute(double number1, double number2) {return number1 * number2;} }// 除法 public class OperationDiv extends Operation{Overrideprotected double compute(double number1, double number2) throws Exception {if(number2 0){throw new Exception(除数不能为0);}return number1 / number2;} }对象工厂 这里对简单工厂创建产品进行了优化可以通过缓存、配置文件、反射和泛型等技术了优化。 如果运算业务需要扩展需要创建具体运算类即可不需要再修改简单工厂类了。 public class OperationFactory {private static final MapString, Operation cachedParsers new HashMap();static {cachedParsers.put(, new OperationAdd());cachedParsers.put(-, new OperationSub());cachedParsers.put(*, new OperationMul());cachedParsers.put(/, new OperationDiv());}public static Operation createOperate0(String operate) {if (operate null || operate.isEmpty()) {return null;//返回null还是IllegalArgumentException全凭你自己说了算}return cachedParsers.get(operate);}/*** createOperate0运用缓存技术节省内存和对象创建的时间* createOperate0 和 createOperate1 同理*/public static Operation createOperate1(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;}/*** createOperate1方法不符合开闭原则* 如果运算业务继续扩展需要创建具体运算类也需要修改简单工厂的 createOperate1方法。* 采用反射技术进行优化即createOperate2方法*/public static Operation createOperate2(String className){Operation operation null;try {if(!(null className || .equals(className))){operation (Operation) Class.forName(className).newInstance();}} catch (Exception e) {e.printStackTrace();}return operation;}/*** createOperate2方法中类型强制转型参数为字符串可控性不高* 采用反射和泛型技术进行优化即createOperate3方法*/public static Operation createOperate3(Class? extends Operation clazz){try {if(null ! clazz){return clazz.newInstance();}} catch (Exception e) {e.printStackTrace();}return null;}}测试 public class Test {public static void main(String[] args) throws Exception {double num1 10;double num2 2;System.out.println(OperationFactory.createOperate0(*).compute(num1, num2));System.out.println(OperationFactory.createOperate1(*).compute(num1, num2));Operation operate2 OperationFactory.createOperate2(cn.jq.learn.simplefactorypattern.OperationDiv);System.out.println(operate2.compute(num1, num2));Operation operate3 OperationFactory.createOperate3(OperationAdd.class);System.out.println(operate3.compute(num1, num2));} }
http://www.hkea.cn/news/14554923/

相关文章:

  • 怎么注销建设银行网站用户产品经理兼职做网站报酬
  • 莆田网站建设方案优化网站程序h5
  • 晋中市建设局网站群晖wordpress连接外网教程
  • 做儿童方面的网站网络有哪些广告推广方式
  • 佛山网站设计建设建设一个小说网站
  • 网站重新设计需要多久医疗app开发需要多少费用
  • 建设企业网站个人网上北京装修公司前十名有哪些
  • 国家示范院校建设网站网络营销软文范例
  • 电子商务网站建设方案书江门网页制作公司
  • 网站运营问题口碑营销方案怎么写
  • 网站 维护费用项目经理网站开发流程
  • 电子商务网站软件平台wordpress 08影院模板
  • 杭州网站建设出名上海正规招聘人才市场
  • 湖南seo优化公司石家庄seo网站排名
  • 网站备案完成后接下来怎么做建筑公司企业标语
  • 金华市网站建设公司营销网点是什么意思
  • 怎么将自己做的网站放到网上百度seo推广方案
  • 建什么网站做cpa中国风 wordpress主题
  • 甜品网站策划与建设上海网站设计费用
  • 优购物官方网站地址昆明企业为什么要做网站
  • 手机建设银行网站首页佛山建站模板
  • 网站建设pc指什么网站推广服务费计入什么科目
  • 企业网站搭建价格淄博网站制作服务推广
  • 网站导航为什么用ul列表做成都住建局官网怎么查询楼盘剩余房
  • 网站的源代码有什么用做网站用phpcms还是
  • php除了写网站吗免费网站后台模板
  • 广西网站简洁网站模板
  • 网上接单做效果图哪个网站好个人备案能做什么网站
  • 浩森宇特北京做网站网络营销就业前景怎么样
  • 大型集团公司网站建设方案上海产品网站建设