javascript设计模式之工厂模式

javascript设计模式之工厂模式

ID:31317212

大小:69.50 KB

页数:4页

时间:2019-01-08

javascript设计模式之工厂模式_第1页
javascript设计模式之工厂模式_第2页
javascript设计模式之工厂模式_第3页
javascript设计模式之工厂模式_第4页
资源描述:

《javascript设计模式之工厂模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、工厂模式是一种最常用的实例化对象模式,是用工厂方法代替new操作的一种模式。在工厂模式中,我们在创建对象吋不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口來指向新创建的对象。因为工厂模式就相当于创建实例对象的new,在JavaScript中通常会使用new关键字来实例化对彖,如A:a=newA(),工厂模式也是用来创建实例对象的,所以以后new时就要多个心眼,是否可以考虑使用工厂模式,虽然这样做,可能多做一些工作,但会给你系统带来更大的可扩展性和尽量少的修改量。设计意图:定义一个创建对象的接口

2、,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。主要解决的问题:主要解决接口选择的问题。使用场景:我们明确地计划不同条件下创建不同实例时。举个现实中的例子来理解工厂模式:现在有一个生成车辆的公司,生产的产品有自行车、摩托车、电动车三种。市场的需求在不断的变化,工厂是无法准确的确定当下市场需要多少的自行车、摩托车、电动车。如果某种车辆生产的太多,就会因为销售不出去而造成库存积压严重的问题。所以工厂的领导会议决定:往后自由在接收到车辆的具体订单时再生产具体的车俩,也就是说,如果

3、接到的是自行车的订单就生产自行车,接到摩托车订单就生产摩托车,接到电动车订单就生产电动车。最简单的工厂模式程序实例:varCar=(function(){varCar二function(model,year,miles){this.model=model;this・year=year;this・miles=miles;};returnfunction(model,year,miles){returnnewCar(model,year,miles);};})();vardika二newCarCDika

4、,,200&20000);这是最简单的工厂模式,只用于创建一种实例对彖。再来看看复杂点的实例://工厂对象varFactory=(function(){〃工厂生产管理对象varproductManagcr={};//生产自行车productManager.createBicycle=funclion(){this,model="Bicycle";console,log("productBicycle!zz);};//生产摩托车productMarmger.createMoto=function(){

5、this,model=console.log(z,productMoto!/z);};〃生产电动车productManagcr.crcatcElcctrocar二function(){this,model=〃Electrocar〃;console,log("productElectrocar!z/);};//生产函数productManager.create二function(type){returnnewproductManager[type];};return{productManager:pr

6、oduct'lanager})0;vartom=Factor^^.productManager.create(/zcreateMotoz/);接下来我们再看一个在网页屮使用的一个实例:假如我们想在网页面里插入一些元素,而这些元素类型不固定,可能是图片,也有可能是连接,甚至可能是文本,根据工厂模式的定义,我们需要定义工厂类和相应的子类:varpage二(function(){vardom={};〃子类1:处理文本dom.Text二function(){this.insert二function(wher

7、e,text){vartxt二document.createTextNode(text);where.appcndChild(txt);}};//子类2:处理链接dom.Link=function(){this,insert=function(where,url){varlink二document,createElement(;1ink.href=url;link.appendChiId(document.creeiteTextNode(url));where.appcndChild(link);}

8、};//子类3:处理图片dom.Image=function(){this,insert=function(where,url){varimg二document.createElementCimg");img.src二url;where.appendChild(img);};//创建函数dom.create二function(type){returnnewdom[type];};return{dom:dom}})0;vart=page.dom・createText')

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。