JS设计模式之工厂模式详解

这次给大家带来js设计模式之工厂模式详解,使用js工厂模式的注意事项有哪些,下面就是实战案例,一起来看一下。

概念:工厂模式定义了一个用于创建对象的接口,这个接口由子类决定实例化哪一个类,该模式是一个类的实例化延迟到了子类。而子类可以重写接口的方法以便创建的时候指定自己的对象类型(抽象工厂)

作用和注意事项 
作用:对象构建十分复杂。

需要依赖具体的环境创建不同的实例

处理大量的具有相同属性的小对象

注意事项:不能滥用工厂,有时候仅仅是给代码增加复杂度

使用方法 
我们通过一个例子来演示这个问题,就像我们这个工厂里要生产不同类型的产品一样,我们每个类型写在一个方法,这样我们在生产的时候直接调用这个办法就行了。 那请看这段代码:

var productManager = {};productManager.createProductA = function () {    console.log('ProductA');}productManager.createProductB = function () {    console.log('ProductB');}productManager.factory = function (typeType) {    return new productManager[typeType];}productManager.factory("createProductA");

登录后复制

我们在详细一点,假如我们想要在网页中插入一些元素,而这些元素的类型不固定,可能是图片可能是链接,甚至可能是文本,根据工行模式的定义我们需要定义相应的子类

var page = page || {};page.dom = page.dom || {};//子函数1:处理文本page.dom.Text = function () {    this.insert = function (where) {        var txt = document.createTextNode(this.url);        where.appendChild(txt);    };};//子函数2:处理链接page.dom.Link = function () {    this.insert = function (where) {        var link = document.createElement('a');        link.href = this.url;        link.appendChild(document.createTextNode(this.url));        where.appendChild(link);    };};//子函数3:处理图片page.dom.Image = function () {    this.insert = function (where) {        var im = document.createElement('img');        im.src = this.url;        where.appendChild(im);    };};

登录后复制

那我们如何定义工厂模式呢?其实很简单

page.dom.factory = function (type) {    return new page.dom[type];}

登录后复制

使用方式如下:

var o = page.dom.factory('Link');o.url = 'http://www.cnblogs.com';o.insert(document.body);

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

JS设计模式之建造者模式详解

JS的设计模式之构造函数模式详解

js设计模式之-单例模式的使用

以上就是JS设计模式之工厂模式详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2782963.html

(0)
上一篇 2025年3月8日 16:41:37
下一篇 2025年3月6日 21:56:49

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JS设计模式之代理模式详解

    这次给大家带来js设计模式之代理模式详解,js代理模式的注意事项有哪些,下面就是实战案例,一起来看一下。 概念:代理模式就是为一个对象提供一个代用品或者占位符,以便控制对它的访问。也就是为了保障当前对象的单一职责,而需要创建另一个对象来处理…

    编程技术 2025年3月8日
    200
  • JS设计模式之命令模式详解

    这次给大家带来js设计模式之命令模式详解,使用js命令模式详解的注意事项有哪些,下面就是实战案例,一起来看一下。 概念 命令模式用于将一个请求封装成一个对象,从而可以用不同的参数对客户进行参数化,该模式将函数的调用请求和操作封装成一个单一的…

    编程技术 2025年3月8日
    200
  • JavaScript中的堆排序详解

    本篇文章讲述了javascript中的堆排序,大家对javascript中的堆排序不了解的话或者对javascript中的堆排序感兴趣的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧 堆排序可以说是一种利用堆的概念来排序的选择排…

    2025年3月8日
    200
  • JavaScript中的计数排序详解

    本篇文章讲述了javascript中的计数排序,大家对javascript中的计数排序不了解的话或者对javascript中的计数排序感兴趣的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧 计数排序的核心在于将输入的数据值转化为…

    2025年3月8日
    200
  • JS设计模式之原型模式详解

    这次给大家带来js设计模式之原型模式详解,使用js原型模式的注意事项有哪些,下面就是实战案例,一起来看一下。 概念:原型模式是指用原型实例指向创建对象的种类,并通过拷贝这些原型创建新的对象。对于原型模式,我们利用javascript原型继承…

    编程技术 2025年3月8日
    200
  • javascript如何实现小球跳动效果

    这次给大家带来javascript如何实现小球跳动效果,javascript实现小球跳动效果的注意事项有哪些,下面就是实战案例,一起来看一下。 今天介绍的是一种通过javascript实现的一种炫酷的动画效果,具体实现特效我通过图片展示给大…

    2025年3月8日
    200
  • 细说JavaScript中的作用域与变量

    本篇文章讲述了JavaScript中的作用域与变量,大家对JavaScript中的作用域与变量不了解的话或者对JavaScript中的作用域与变量感兴趣的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧 变量作用域 作用域:就是变…

    2025年3月8日
    200
  • 好用的js插件分享

    从一些开源网站上下载下来的 后台管理系统模板一般会有很多的js ,其js 的功能是什么呢?这里随手查询了一下,记录下来,希望本文能帮助到大家。 正文: 1.zDialog.js 各种弹窗插件 详细案例:http://www.2ky.cn/P…

    2025年3月8日 编程技术
    200
  • vue-cli初始化一个vue.js项目的方法实例

    解析打包.vue文件 vue为了能够使我们在项目开发中对组件进行更好的维护,提供了一个单文件组件系统,vue把每一个独立的组件放在一个.vue的文件中,在这个文件中提供基础三个自定义标签:1. template2. script3. sty…

    编程技术 2025年3月8日
    200
  • javascript实现线程以及事件循环详解

     本篇文章讲述了javascript实现线程以及事件循环,大家对javascript实现线程以及事件循环不了解的话或者对javascript实现线程以及事件循环感兴趣的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧 1.为什么说…

    2025年3月8日
    200

发表回复

登录后才能评论