美文网首页Web前端之路让前端飞程序员
给我一张名片-工厂方法模式

给我一张名片-工厂方法模式

作者: YukiYang | 来源:发表于2017-04-28 17:36 被阅读48次

工厂方法模式

通过对产品类的抽象使其创建业务主要负责用于多类产品的实例。

安全模式类

安全模式类是说可以屏蔽错误的使用类而造成的错误。
比如对于一个类的创建,实例化一个对象需要 new 关键字,但是你的合作者可能不知道这是一个类,那么在使用的时候可能忘记加new关键字。如下:

var Demo = function () {
    };
    Demo.prototype = {
        show: function () {
            console.log("成功获取!");
        }
    }
    var d = new Demo();
    d.show();//成功获取!
    var d = Demo();
    d.show();//Uncaught TypeError: Cannot read property 'show' of undefined

安全模式就是为了解决这个问题。如下:

var Demo = function () {
        if (!(this instanceof Demo)) {
            return new Demo();
        }
    }
    Demo.prototype = {
        show: function () {
            console.log("成功获取!");
        }
    }
    var d = Demo();
    d.show();//成功获取!

安全的工厂方法

//安全模式创建的工厂类
    var Factory = function (type, content) {
        if (this instanceof Factory) {
            var s = new this[type](content);
            return s;
        } else {
            return new Factory(type, content);
        }
    }

    //工厂原型中设置创建所有类型数据对象的基类
    Factory.prototype = {
        Java: function (content) {
            //......
        },
        JavaScript: function (content) {
            //......
        },
        UI: function (content) {
            //......
        }
    }
    //模拟数据
     var data = [
        {
            type:'JavaScript',
            content:'JavaScript哪家强'
        },
        {
            type:'Java',
            content:'Java哪家强'
        },
        {
            type:'UI',
            content:'UI哪家强'
        }
    ];
    //格式友好,快速完成需求
    for (var i = 0; i++; i < 2) {
        Factory(s[i].type, s[i].content);
    }

对于创建多类对象,简单工厂就不太适合了。工厂方法模式我们可以轻松创建多个类的实例,我们不必关心创建该对象的具体类,只要调用工厂模式即可。

如果其他人不小心错误的调用工厂格式,这样就有可能通过工厂方法执行中的this对象为全局对象添加变量,并且得不到期望的实例对象,所以安全的工厂模式可以给我们吃一个定心丸。

摘自:《JavaScript设计模式》 张容铭著

相关文章

  • 学习JavaScript设计模式——工厂模式(二)

    工厂方法模式——给我一张名片 工厂方法模式: 通过对产品类的抽象使其创建业务,主要负责用于创建多类产品的实例。 本...

  • 给我一张名片-工厂方法模式

    工厂方法模式 通过对产品类的抽象使其创建业务主要负责用于多类产品的实例。 安全模式类 安全模式类是说可以屏蔽错误的...

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • 设计模式-工厂模式

    工厂模式概念 实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂模式...

  • 设计模式-工厂方法模式

    1、工厂方法模式(Factory Method) 工厂方法模式分为三种: 普通工厂模式 多个工厂模式 静态工厂模式...

  • 设计模式 工厂模式

    工厂模式 工厂模式三大类1、简单工厂模式(静态工厂方法模式)2、工厂方法模式3、抽象工厂模式(Kit模式) 简单工...

  • python设计模式 - 工厂模式之工厂方法

    python 环境 工厂方法模式简介 工厂方法模式Factory Method,又称多态性工厂模式。在工厂方法模式...

  • 第一章2.0工厂- 基础类准备

    2.1工厂-简单工厂模式2.2工厂-工厂方法模式2.3工厂-抽象工厂模式

  • 建造模式

    包括:简单工厂、工厂方法、抽象工厂、单例模式、多例模式、建造模式、原始原型模式。 简单工厂:又名静态工厂方法模式,...

  • PHP-浅谈单例模式和工厂模式

    PHP中常用的设计模式有单例模式、工厂模式(简单工厂模式、工厂方法模式和抽象工厂方法模式)、适配模式、策略模式。 ...

网友评论

    本文标题:给我一张名片-工厂方法模式

    本文链接:https://www.haomeiwen.com/subject/mmrazttx.html