知识大全 JavaScript模式之工厂模式(Factory)应用介绍

Posted 工厂

篇首语:宁可枝头抱香死,何曾吹落北风中。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JavaScript模式之工厂模式(Factory)应用介绍相关的知识,希望对你有一定的参考价值。

JavaScript模式之工厂模式(Factory)应用介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  工厂模式也是对象创建模式之一 它通常在类或类的静态方法中去实现 构造对象的一种方式是使用new操作符 但使用new时正是针对实现编程 会造成“耦合”问题 与具体的类关系紧密 导致代码更脆弱 缺乏弹性 在复杂逻辑的项目中建议是面向接口编程 先看简单工厂模式

  代码如下: Person(name age) var obj = obj name = name obj age = age return obj var p = Person( jack ) var p = Person( lily )

  与构造函数方式写一个类的区别在于没有使用this 而是每次都构造一个空对象 然后给其添加属性 创建对象方式不是使用new 而是使用函数调用方式 这种方式基本上用来替代一个类(具有相同属性的对象) 而复杂一些的工厂则可以造不同类型的对象 下面以个水果工厂示例

  代码如下: function Banana() this price = $ function Apple() this price = $ function Orange() this price = $ // 静态工厂类 function Fruit() Fruit factory = function(type) if (!window[type]) return var fruit = new window[type] return fruit // 制造不同的水果 var banana = Fruit factory( Banana ) var apple = Fruit factory( Apple ) var orange = Fruit factory( Orange )

  有三个水果类Banana Apple Orange 一个水果工厂类Fruit 通过静态方法factory每次可以造出不同的水果类对象 工厂模式在JavaScript原生对象Object也有所体现 比如

  代码如下: var obj = Object() num = Object( ) str = Object( s ) boo = Object(false);

  Object就是一个工厂 根据参数不同会构造出不同的对象 obj是一个空对象 num是一个Number类型的对象 str是一个String类型的对象 boo是Boolean类型的对象 jQuery Callbacks也是一个工厂 每次调用它都会返回一个具有add remove fire等方法的对象 还可以根据参数如“once” “memory”等构造出具有不同性质的对象

  所谓的工厂模式 是指可以返回一个对象的方法 利用这种模式 我们可以做什么呢?假设我不满足现有的DOM对象里面所拥有的方法 我想要增加一个自定义的方法叫sayHello 我们可以这样做:

  代码如下: function RemouldNodeObj(DomNode) //先判断一下传递进来的参数是不是一个Dom节点 if(typeof DomNode == "object" && DomNode nodeType == ) DomNode say = function() alert("Hello!!"); else alert("你传递进来的参数不正确!");

  //这样调用: window onload = function() var oDiv = RemouldNodeObj(document getElementById("test")); //通过这一步 oDiv就拥有了新的方法say oDiv say();

  有了上面的基础后 我们来实现点复杂的功能 我们要实现只要通过js的调用就生成一个简单的form表单 看代码:

  代码如下: <> <head> <title>JavaScript之工厂模式</title> <script type=text/javascript> function RemouldNodeObj(DOMnode) //先判断一下传递进来的参数是不是一个Dom节点 if(typeof DOMnode == "object" && DOMnode nodeType == ) DOMnode createForm = function(opt) //下面是一大串的字符串加法 只是为了拼装出form元素 var oForm = ""; oForm += "<form action="" + opt action + "" "; oForm += "method="" + (opt method || GET ) + "" id=""; oForm += (opt id || "") + """; oForm += ">"; oForm += "</form>"; //这里的this不要想得太复杂 谁调用就指向谁 所以this指向 oDiv this innerHTML = oForm; else alert("参数不正确!"); return DOMnode;

  //这样调用 window onload = function() var oDiv = RemouldNodeObj(document getElementById("custom")); oDiv createForm( action : index jsp method : post id : myForm ); </script> </head>

  <body> <div id="custom">###</div> </body> </>

cha138/Article/program/Java/JSP/201311/19973

相关参考

知识大全 用Delphi2005学设计模式之简单工厂篇

用Delphi2005学设计模式之简单工厂篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!工厂模式

知识大全 C#设计模式之简单工厂篇

C#设计模式之简单工厂篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  首先定义一个接口具体名为

知识大全 用Delphi2005学设计模式之工厂方法篇

用Delphi2005学设计模式之工厂方法篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!本文完成

知识大全 用Delphi语言来学设计模式之简单工厂篇

用Delphi语言来学设计模式之简单工厂篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 爪哇语言抽象工厂创立性模式介绍

  工厂模式有简单工厂模式工厂方法模式和抽象工厂模式几种形态其中简单工厂模式和工厂方法模式已经在前面作过介绍在这里我们来介绍抽象工厂模式  抽象工厂模式是所有形态的工厂模式中最为抽象和最具广泛性的一种

知识大全 爪哇语言工厂方法创立性模式介绍(上)

  正如同笔者在一节里介绍的工厂模式有简单工厂模式工厂方法模式和抽象工厂模式几种形态简单工厂模式已经在前面作过介绍在简单工厂模式中一个工厂类处于对产品类实例化调用的中心位置上它决定那一个产品类应当被实

知识大全 实现Java抽象工厂模式

实现Java抽象工厂模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  了解模式需要研究客户端程

知识大全 爪哇语言工厂方法创立性模式介绍(下)

  packagejavapatternsfactorymethod;    publicclassBadPlantExceptionextendsException     publicBadPla

在“斯大林模式”下,全国是一个统一的“大工厂”,而企业只是这座“大工厂”中的一个“生产车间”……甚至“每一双皮鞋或每一件

在“斯大林模式”下,全国是一个统一的“大工厂”,而企业只是这座“大工厂”中的一个“生产车间”……甚至“每一双皮鞋或每一件内衣,都要由中央调配”。这表明“斯大林模式”_____。A、实行指导性的计划管理

知识大全 Java与模式之单例模式

Java与模式之单例模式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  单例模式(Singlet