zoukankan      html  css  js  c++  java
  • 程序设计模式的工厂(Factory)模式

    工厂(Factory)模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。

      工厂就是把成员对象的创建工作转交给一个外部对象,好处在于消除对象之间的耦合(何为耦合?就是相互影响)。通过使用工厂方法而不是new关键字及具体类,可以把所有实例化的代码都集中在一个位置,有助于创建模块化的代码,这才是工厂模式的目的和优势。

      举个例子:你有一个大的功能要做,其中有一部分是要考虑扩展性的,那么这部分代码就可以考虑抽象出来,当做一个全新的对象做处理。好处就是将来扩展的时候容易维护 - 只需要操作这个对象内部方法和属性,达到了动态实现的目的。非常有名的一个示例 - XHR工厂

     1   var XMLHttpFactory =function(){};      //这是一个简单工厂模式
    2   XMLHttpFactory.createXMLHttp =function(){
    3     var XMLHttp = null;
    4     if (window.XMLHttpRequest){
    5       XMLHttp = new XMLHttpRequest()
    6     }elseif (window.ActiveXObject){
    7       XMLHttp = new ActiveXObject("Microsoft.XMLHTTP")
    8     }
    10   return XMLHttp;
    11   }
    12   //XMLHttpFactory.createXMLHttp()这个方法根据当前环境的具体情况返回一个XHR对象。
    13   var AjaxHander =function(){
    14     var XMLHttp = XMLHttpFactory.createXMLHttp();
    15     ...
    16   }


      工厂模式又区分简单工厂模式和抽象工厂模式,上面介绍的是简单工厂模式,这种模式用的更多也更简单易用。抽象工厂模式的使用方法就是 - 先设计一个抽象类,这个类不能被实例化,只能用来派生子类,最后通过对子类的扩展实现工厂方法。 示例:

     1   var XMLHttpFactory =function(){};      //这是一个抽象工厂模式
    2   XMLHttpFactory.prototype = {
    3   //如果真的要调用这个方法会抛出一个错误,它不能被实例化,只能用来派生子类
    4   createFactory:function(){
    5   thrownew Error('This is an abstract class');
    6   }
    7   }
    8   //派生子类,文章开始处有基础介绍那有讲解继承的模式,不明白可以去参考原理
    9   var XHRHandler =function(){
    10   XMLHttpFactory.call(this);
    11   };
    12   XHRHandler.prototype =new XMLHttpFactory();
    13   XHRHandler.prototype.constructor = XHRHandler;
    14   //重新定义createFactory 方法
    15   XHRHandler.prototype.createFactory =function(){
    16   var XMLHttp =null;
    17   if (window.XMLHttpRequest){
    18   XMLHttp =new XMLHttpRequest()
    19   }elseif (window.ActiveXObject){
    20   XMLHttp =new ActiveXObject("Microsoft.XMLHTTP")
    21   }
    22   return XMLHttp;
    23   }
  • 相关阅读:
    spring mvc 返回json
    spring mvc 解决后台传递值乱码问题
    sring mvc 返回值至jsp界面的几种方式
    spring mvc 注解访问控制器以及接收form数据的方式,包括直接接收日期类型及对象的方法
    spring mvc 通过配置xml访问控制器的三种方式
    spring mvc 入门配置
    HBase 学习笔记
    Centos搭建Linux测试环境,几个基本的设置项
    kafka 集群安装与安装测试
    Kafka 分布式消息队列介绍
  • 原文地址:https://www.cnblogs.com/zxdesign/p/3081813.html
Copyright © 2011-2022 走看看