博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS工厂模式
阅读量:6250 次
发布时间:2019-06-22

本文共 1406 字,大约阅读时间需要 4 分钟。

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

看不懂?没关系,先看看下面的例子。

var produceManager = {};produceManager.createProduceA = function(){    console.log("ProduceA");}produceManager.createProduceB = function(){    console.log("ProduceB");}produceManager.factory = function(type){    return new produceManager[type];}var produce = produceManager.factory("createProduceA");

如果不好理解,我们举个实际一点的例子。假设我们要在一个页面上插入一些元素,但这些元素不确定,可能是图片,可能是链接,可能是文本。我们需要定义工厂类与子类(产品类)。

var page = page || {};page.dom = page.dom || {};//子函数:处理文本page.dom.Text = function(){    this.insert = function(where){        var txt = document.createTextNode(this.url);        where.appendChild(txt);    };};//子函数:处理链接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);    };};//子函数:处理图片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];};//test:var o = page.dom.factory("Link");o.url = "http://abc.com";o.insert(document.body);

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

这下是不是清楚多了,还不懂,没关系,多敲几遍,多看几遍,就懂了。

转载地址:http://vffsa.baihongyu.com/

你可能感兴趣的文章
Linux coredump
查看>>
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
ElasticSearch 2 (32) - 信息聚合系列之范围限定
查看>>
windows查看端口占用
查看>>
Yii用ajax实现无刷新检索更新CListView数据
查看>>
App 卸载记录
查看>>
JavaScript变量和作用域
查看>>
开源SIP服务器加密软件NethidPro升级
查看>>
南京大学周志华教授当选欧洲科学院外籍院士
查看>>
计算机网络与Internet应用
查看>>
Mars说光场(3)— 光场采集
查看>>
Django 文件下载功能
查看>>
xBIM 插入复制功能
查看>>
AI技术出海 - 阿里云GPU服务器助力旷视勇夺4项世界第一
查看>>
Spring Boot中初始化资源的几种方式
查看>>
走红日本 阿里云如何能够赢得海外荣耀
查看>>
HTML DOM 之 DOM对象:Document Object Model (文档对象模型)
查看>>
centos 6.5安装vncserver 并开启远程桌面
查看>>
在RHEL上配置epel的yum源及其他开源YUM源
查看>>
mysql密码过期
查看>>