精华内容
下载资源
问答
  • js工厂方法模式

    千次阅读 2017-02-23 09:17:32
    给我一张名片——工厂方法模式 工厂方法模式(Factory Method):通过对产品类的抽象使其创建业务主要负责用于创建多类产品的实例。 工厂方法模式本意是说将实际创建对象工作推迟到子类中。这样核心类就成了抽象类...
    	<h1>给我一张名片——工厂方法模式</h1>
    	<p>工厂方法模式(Factory Method):通过对产品类的抽象使其创建业务主要负责用于创建多类产品的实例。</p>
        <p>工厂方法模式本意是说将实际创建对象工作推迟到子类中。这样核心类就成了抽象类,JavaScript没有像传统类那样的方式轻易创建抽象类,
             所以在JavaScript中实现工厂方法模式我们只需要参考它的核心思想即可。所以我们可以将工厂方法看作是一个实例化对象的工厂类。安全起见,我们采用安全模式类,
             而我们将创建对象的基类放在工厂方法类的原型中即可。</p>
       <script>
          //安全的工厂方法模式
          var Factory = function( type, content ){
              if( this instanceof Factory ){
                 var s = new this[ type ]( content );
                 return s;
              }else{
                 new Factory( type, content );
              }
          };
          
          Factory.prototype = {
             Java: function( content ){
                //....
             },
             JavaScript: function( content ){
                //....
             },
             UI: function( content ){
                this.content = content;
                (function( content){
                   var oDiv = document.createElement( "div" );
                   oDiv.innerHTML = content;
                   oDiv.style.border = "1px solid #333";
                   document.getElementById( "container" ).appendChild( oDiv );
                } )( content );
             },
             php: function( content ){
                //....
             }
          }
       </script>
       <p>这样我们以后如果想添加其他的类,是不是只需要写在Factory这个工厂类的原型里就可以了。</p>
       <p>这样以后就不必担心创建时做任何修改,就好比你在Factory类的原型里面注册一张名片,
       	以后需要哪类只需要拿这张名片,查找里面的信息就能找到这个类了,所以就不用担心使用时找不到基类的问题了。</p>
       	<p>忆之获:对于创建多类对象,前面学过的简单工厂模式就不太适用了,这是简单工厂模式的局限,当然这正是工厂方法模式的价值之所在,通过工厂方法模式我们可以
       		轻松创建类型的实例对象,这样工厂方法对象在创建对象的方式也避免了使用者与对象类之间的耦合,用户不必关心创建该对象的具体类,只需调用工厂方法即可。</p>

    展开全文
  • 一、简单工厂模式简单工厂模式属于类的创建型模式,又叫静态工厂方法模式。通过专门定义一个工厂类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。举例说明:现在有个工厂,可以生产自行车和摩托车,...

    一、简单工厂模式
    简单工厂模式属于类的创建型模式,又叫静态工厂方法模式。通过专门定义一个工厂类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
    举例说明:
    现在有个工厂,可以生产自行车和摩托车,通过外界的订单来生产产品。
    class FACTORY {
      Product(type) {
        var production;
        switch(type) {
          case 'bike' : 
          production = new Bike();
          break;
          case 'moto' :
          production = new Moto();
          break;
        }
        return production
      }
    }
    class Bike {
      product() {
        console.log('生产自行车');
      }
    }
    class Moto {
      product() {
        console.log('生产摩托车车');
      }
    }
    let order = new ORDER();
    console.log('order',order.Product('bike).product());
    在上边代码中,工厂类作为最核心存在,他包含了处理业务的逻辑,能够根据外界的条件去创建具体的类,也就是说能够根据订单内容去生产相关产品,无需关注自行车,摩托车是怎么生产的。但是简单虽然简单,当业务
    类型多的时候,会不断的向工厂类添加功能,把所有功能都集中到一个类上,足够多的时候这给类难以维护并且臃肿,这违反了开闭原则。
    二、工厂方法模式

    工厂方法模式是对简单工厂模式的稍微的改进,它定义一个用于创建对象的接口,让子类决定实例化哪一个类。针对上述问题,假如每次添加一种新的产品,都要去更改工厂内部,工厂方法模式就是将这个大厂拆分出各个小厂,每次添加新的产品让小厂去生产,大厂负责指挥就好了。

    class FACTORY {

      construct(){  

      }

    }

    class SONFACTORY extends FACTORY {

      Product(type) {
        var production;
        switch(type) {
          case 'bike' : 
          production = new Bike();
          break;
          case 'moto' :
          production = new Moto();
          break;
        }
        return production
      }

    }

    class Bike
      product() {
        console.log('生产自行车');
      }
    }
    class Moto{
      product() {
        console.log('生产摩托车车');
      }
    }

    与简单工厂模式相比,制造产品的工厂类不再 只有一个,而是每种具体产品类都对应一个生产它的具体工厂类。而这些具体工厂类的共同特征再被提取出来形成一个抽象产品类,这些具体产品类都继承自这个抽象产品类。每当有新的需求,增加一种继承在抽象工厂的具体工厂类,它符合开闭原则。

    转载于:https://www.cnblogs.com/linyunchao/p/10534825.html

    展开全文
  • 简单工厂模式也叫静态工厂方法模式(Static FactoryMethod Pattern). 工厂方法模式 使用子类来决定一个成员变量应该是哪个具体的类的实例 在简单工厂模式中是通过一个单体来实例化一个具体产品,而在工厂方法模式...
    注:空心箭头表示的是种继承关系,工厂类和产品类之间是一种依赖关系,是用箭头加虚线表示的,下面的模型图是用的实线是不对(时间不够用,在这里我偷懒了,这个习惯不好,呵呵)

    简单工厂模式(Simple Factory Pattern):
    使用一个类(通常为单体)来创建实例;简单工厂模式也叫静态工厂方法模式(Static FactoryMethod Pattern).

    接口的定义一般是以I开头标识符,在JS中没有定义接口或抽象类的语法;
    var MacBikeFactory = {
      createBike : function() {
        return new MacBike();
      }
    }
    function IMacBike() {}
    function MacBike() {}
    	MacBike.prototype = {
      	constructor : MacBike,
      	getBike: function() {
        	console.log("创建一台Mac车");
      }
    }
    var macFn = MacBikeFactory.createBike();
    macFn.getBike();

    工厂方法模式
    使用子类来决定一个成员变量应该是哪个具体的类的实例


    function IMacBikeFactory() {}
    function MacBikeFactory()  {
      this.createBike() {
        return new MacBike();
      }
    }
    function IMacBike() {}
    function MacBike() {}
    	MacBike.prototype = {
      	constructor : MacBike,
      	getBike: function() {
        	console.log("创建一台Mac车");
      }
    }
    
    var macBikeFactory = new MacBikeFactory();
    var macBike = IMacBikeFactory.createBike();
    macBike.getBike(); 

    在简单工厂模式中是通过一个单体来实例化一个具体产品,而在工厂方法模式中是把这个实例化的过程交给了抽象工厂的子类来创建的

    抽象工厂模式
    多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。 
     一个抽象工厂类,可以派生出多个具体工厂类。 
    每个具体工厂类可以创建多个具体产品类的实例。 


    有二个抽象产品IBike和ICar类,它们分别派生二个具体产品
    有一个IMall抽象工厂类,它派生出二个具体工厂AMall和BMall类
    每个具体工厂类又可以创建多个具体产品实例 AMall卖场销售BaoMa品牌的汽车和FengHuang品牌的自行车;BMall卖场销售FaLali品牌的汽车和JieAnTe品牌的自行车


    展开全文
  • 通过工厂方法模式可以轻松的创建多个类的实例对象,而且创建对象的方式避免了使用者与对象类之间的耦合,用户不必关心创建该对象的具体类,只需调用工厂方法即可。 安全的工厂方法模式 var Factory=function(type...

    对于创建多类对象,简单工厂就不太实用了。

     通过工厂方法模式可以轻松的创建多个类的实例对象,而且创建对象的方式避免了使用者与对象类之间的耦合,用户不必关心创建该对象的具体类,只需调用工厂方法即可。

    安全的工厂方法模式

    var Factory=function(type,content){
        if(this instanceof Factory){
            var s = new this[type](content);
        }else{
            return new Factory(type,content);
        }
    }
    //工厂原型中设置创建所有类型数据对象的基类
    Factory.prototype = {
        Java: function( content ){
            console.log(content);
        },
        JavaScript: function( content ){
            console.log(content);
        }
    }

    测试的数据

    var data=[
        {type:'Java',content:'java'},
        {type:'Java',content:'java2'},
        {type:'JavaScript',content:'javascript'},
        {type:'Java',content:'java3'}
    ];
    var len = data.length-1;
    for(var i=len;i>=0;i--){
       Factory(data[i].type,data[i].content);
    }

    返回结果:


    希望大神多多指点。qq:274501366

    展开全文
  • 待定
  • JS设计模式】工厂方法模式

    千次阅读 2015-08-08 20:26:13
    工厂方法模式(Factory method pattern)是一种实现“工厂”概念的面上对象设计模式。实质是定义一个创建对象的接口,但是让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。  ...
  • 设计模式(5)[JS版]-JavaScript如何实现工厂方法模式

    千次阅读 多人点赞 2020-07-23 20:52:03
    1 什么是工厂方法模式? 2工厂方法模式作用 3工厂方法模式参与者 4 代码实现 1 什么是工厂方法模式? 在基于类的编程中,工厂方法模式是一种创建模式,该模式使用工厂方法来处理创建对象的问题,而不必指定将要...
  • js工厂方法

    2017-03-21 16:21:00
    工厂方法与简单工厂的区别在于工厂方法没有switch...从UML图可以看出,在工厂方法模式中,工厂类与具体产品类具有平行的等级结构,它们之间是一一对应的。针对UML图的解释如下: Creator类:充当抽象工厂角色,任何...
  • &lt;!DOCTYPE html&gt;&lt;html lang="en"&gt;&lt;...Factory方法模式--oop面向对象编程实例&lt;/title&gt; &lt;/head&gt;&lt;body&gt; 
  • 安全模式 可以屏蔽对类的错误使用而造成的后果 var Dome = function(){ if(!(this instanceof Dome)){ return new Dome(); } } Dome.prototype.show = ()=&amp;gt;{ ...
  • JS工厂模式

    2019-10-08 16:00:00
    什么是工厂模式? 工厂模式是一种用来创建对象的设计模式。我们不暴露对象创建的逻辑,而是将...工厂方法 3.抽象工厂 1.简单工厂: let factory = function (role) { function superman() { this.name =...
  • 主要介绍了JS 设计模式之:工厂模式,结合实例形式分析了JS 工厂模式基本概念、原理、定义、实现方法与操作注意事项,需要的朋友可以参考下
  • 复杂工厂模式 ** 工厂模式转变为复杂工厂模式–也就是由粗粒度变成细粒度。也就是每个对象实现的方法的变得更具体化。** 看下面代码,同上文一样要先插入CommonUtil.js文件。 <script> // 复杂工厂模式(由粗...
  • JS 工厂模式

    2017-12-14 09:35:29
    工厂模式的目的是为了创建对象,它通常在类或者类的静态方法中实现,具有以下目标: 当创建相似对象时执行重复操作 当编译时不知道具体类型的情况下,为工厂客户提供一个创建对象的接口 与创建型模式类似,工厂...
  • js-工厂模式

    2019-09-22 18:34:34
    工厂方法模式 抽象工厂模式 1.简单工厂模式 简单工厂模式:又称为静态工厂方法模式,它属于类创建型模式。 在简单工厂模式中,可以根据参数的不同返回不同类的实例。 由工厂对象决定创建某一种产品对象类的实例。 ...
  • js 工厂模式

    2016-08-06 21:46:00
    工厂模式是管理对象的一种设计模式,通过向外提供一个公共方法用于创建对象。把使用对象的部分与创建对象的部分分离,创建对象...在工厂方法中,根据传入的参数创建相应的对象,并且返回。  function Orange(...
  • js工厂模式

    2017-03-17 16:12:00
    工厂模式定义一个用于创建对象的借口,这个借口由子类决定类实例化那一个类。...并且,你会经常在程序里看到工厂方法,用于让子类类定义需要创建的对象类型。 var gongchang={}; gongchang.chanyifu...
  • 浅析JS抽象工厂模式

    2020-11-26 11:32:25
    以下就是作者学习中遇到的问题以及代码实例,最后还给大家关于JS抽象工厂模式的学习做了总结。 抽象工厂模式(Abstract Factory)就是通过类的抽象使得业务适用于一个产品类簇的创建,而不负责某一类产品的实例。 JS中...
  • js工厂模式

    2019-02-19 11:05:00
    工厂模式:  什么叫工厂模式,工厂就是大家大脑里想的...工厂方法模式 抽象工厂模式 简单工厂:  简单工厂说白了,就是需要想到你要干什么,要分几步做,把每个事件全都摆出来,完咯,开始着手建厂,在厂里...
  • JS工厂模式介绍

    千次阅读 2015-07-21 23:47:02
    工厂方法模式(Factory method pattern)  工厂方法模式(Factory method pattern)是一种实现“工厂”概念的面上对象设计模式。实质是定义一个创建对象的接口,但是让实现这个接口的类来决定实例化哪个类...
  • 本文实例讲述了js简单工厂模式用法。分享给大家供大家参考。具体实现方法如下: <!DOCTYPE html> <html> <head> <title>简单工厂模式</title> </head> <body> [removed] /...
  • 工厂方法模式 前言 今天自己看了一下自己写的部分博客,发现写的好丑....開始注意自己的排版!!可是偏亮也不是一朝一夕就完毕的,我尽量让它美丽一点.....每天美丽一点点 正文 工厂方法模式是一种实现”工厂”...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 609
精华内容 243
关键字:

js工厂方法模式