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

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

工厂模式定义一个用于创建对象的借口,这个借口由子类决定类实例化那一个类。该模式使一个类的实例化延迟到了子类。而子类可以重写接口方法以便创建的时候制定自己的对象类型(抽象工厂)。这个模式十分有用,尤其是创建对象的流程赋值的时候,比如依赖于很多设置文件等。并且,你会经常在程序里看到工厂方法,用于让子类类定义需要创建的对象类型。

var gongchang={};

gongchang.chanyifu=function(arg){
this.gongren=50;
alert("我们有"+this.gongren);
}
gongchang.chanxie=function(){
alert('产鞋子');
}

gongchang.yushu=function(){

alert('运输');
}
gongchang.changzhang=function(para){
return gongchang[para]();
}
var me=gongchang.changzhang('chanyifu');
alert(me.gongren);

工厂模式作用:

1.对象的构建十分复杂。
2.需要依赖具体的环境创建不同实例。
3.处理大量具有相同属性的小对象。
注意事项:不能滥用工厂,有时候仅仅是给代码增加复杂度。

简单工厂模式:只有一个抽象产品类

var XMLHttpFactory=function(){};

XMLHttpFactory.createXMLHttp=function(){
var XMLHttp=null;
if(window.XMLHttpRequest){
XMLHttp=new XMLHttpRequest();
}else if(window.ActiveXObject){
XMLHttp=new ActiveXObject('Microsoft.XMLHttp')
}
return XMLHttp;
}

var AjaxHander=function(){

var xml=XMLHttpFactory.createXMLHttp();
}

抽象工厂模式:有多个抽象产品类

var XMLHttpFactory=function(){};

XMLHttpFactory.prototype={
createFactory:function(){
throw new Error('This is an abstract class');
}
}
var XMLHandler=function(){
XMLHttpFactory.call(this); //改变this的指向
}
XMLHandler.prototype=new XMLHttpFactory();
XMLHandler.prototype.constructor=XMLHandler
XMLHandler.prototype.createFactory=function(){
var XMLHttp=null;
if(window.XMLHttpRequest){
XMLHttp=new XMLHttpRequest();
}else if(window.ActiveXObject){
XMLHttp=new ActiveXObject('Microsoft.XMLHttp')
}
return XMLHttp;
}

转载于:https://www.cnblogs.com/sungangmo/p/6566864.html

你可能感兴趣的文章
VS_断点无效
查看>>
关于“无敌删除命令”
查看>>
017 搭建eureka注册中心
查看>>
nis服务器搭建
查看>>
红帽企业存储管理之DRBD应用详解
查看>>
Linux下mail服务器架构之源码实现postfix邮件基本功能
查看>>
Bios加密
查看>>
Apache 服务+ AWStat分析系统的应用
查看>>
前端技术学习之选择器(六)
查看>>
使用 Docker 搭建 Tomcat 运行环境
查看>>
vim使用技巧
查看>>
牛反天望观测太阳系内目标的使用小记 (一)
查看>>
Create a RHEL6 PXE Installation Server
查看>>
【Android游戏开发二十二】(图文详解)游戏中灵活实现动画播放!
查看>>
桌面支持--Office2013没有Office Picture Manage怎么安装
查看>>
chmod修改文件权限失败
查看>>
数据结构与算法-->互为素数
查看>>
Linux系统学习方法——写给小白
查看>>
Nginx服务器报500 Internal Server Error错误
查看>>
链表的游标实现
查看>>