`

JavaScript中实现工厂模式.

阅读更多

JavaScript中实现工厂模式.


        第一次亲密接触:利用JavaScript中的prototype实现"基于多态的工厂模式".

 

        老早就知道JavaScript中的prototype了,可一直没机会正式用下,虽说以前自己写着玩过,但由于没有与实际应用联系起来也就没能真真正正地感受到这个prototype的威力.

 

        今天在工作中终于有幸用到这个了.

 

        具体情况是这样的:项目中要提交一个表单,可这个表单有多层结构,用户在提交时可以具体情况而有选择性的提交.刚开始时,是用那种很笨很笨地纯粹表单提交,结果在Java那边要写一大串的代码来从request里取出各个Parameter再用这个生成JavaBean实例(想过用Spring的form标签,但配置起来很是复杂,终因得不偿失而放弃了).

 

        决定用JSON来包装并用jQuery里的Post来Ajax地与后台交互.

 

        刚开始时,用如下的代码来做JSON的包装:


 var menu;
 if(conditionOne){
  menu = {name: $('nameColumn'), order: $('ordrColumn'), ...subCategory:{...,...}};
  $.post('xxxx.htm',{para: JSON.stringfy(menu)}, success:function(){....});
 }else if(conditionTwo){
  menu = {name: $('nameColumn'), order: $('ordrColumn'), ...imageInfo:{...,...}};
  $.post('xxxx.htm',{para: JSON.stringfy(menu)}, success:function(){....});
 }
这样做很烦琐,写的代码也很不友好,很不面向对象.

 

        经高手点拔后,采用了下面的方法.


 step1:在一个单独的js文件中如下所示地写出menu类:
 function Menu(name,order,...,condition...,option){
  this.name = name;
  this.order = order;
  ...
  this.condition = condtion;
  ...
  this.option = option;
 }

 

 Menu.prototype.toJsonString = function(){
  var data;
  if(this.conditionOne){
   var subCategory = createSubCategory();
   data = {name:nameVal,order:orderVal,...,subCategoryString:subCategory};
  }else if(this.conditionTwo){
   var imageInfo = createImageInfo();
   data = {name:nameVal,order:orderVal,...,imageInfoString:imageInfo};
  }
  return JSON.stringfy(data);
 }

 

 function createMenu(){
  if(conditionOne){
   returne new Menu(.......);
  }else if(conditionTwo){
   returne new Menu(.......);
  }
 }


 step2,这样有了上面的准备后,就可以直接在响应事件中写:

 function eventHandler(){
  var menu = createMenu();

  $.post('xxxx.htm',{para: menu.toJsonString()}, success:function(){....});
 }

 

 

 从调用方的角度来看,代码简洁了许多.

 


 利用这个prototype还实现了JavaScript版的工厂模式,呵呵,不错!
 
 

2
0
分享到:
评论

相关推荐

    javascript设计模式之工厂模式.docx

    工厂模式在 JavaScript 中的应用 工厂模式是一种常用的设计模式,它提供了一种创建对象的方式,而不需要指定具体的类别。工厂模式的主要优点是它可以将对象的创建过程与具体的类别分离,从而提高了代码的灵活性和可...

    JavaScript高级与设计模式.zip

    2. **工厂模式(Factory)**:用于创建对象,隐藏了对象创建的细节,提供一个统一的接口。可以用来解决JavaScript中没有类的局限。 3. **观察者模式(Observer)**:定义了对象之间的一对多依赖关系,当一个对象的...

    JavaScript中的工厂模式:构建灵活的对象创建机制

    通过本文的介绍,你应该能够理解工厂模式的基本概念,掌握在JavaScript中实现工厂模式的方法,并能够在实际项目中应用这一模式来构建灵活的对象创建机制。 通过本文的介绍,你应该能够理解工厂模式的重要性,掌握在...

    JavaScript书籍(JavaScript模式.pdf+JavaScript高效图形编程.pdf)

    5. **物理模拟**:利用JavaScript实现简单的物理效果,如碰撞检测、重力模拟等。 通过学习这两本书,开发者不仅可以掌握JavaScript的核心语法和最佳实践,还能了解到JavaScript在图形编程领域的强大潜力。不论是想...

    包含javascript的基础语法,面向对象的实现和设计模式实现.zip

    包含javascript的基础语法,面向对象的实现和设计模式实现Javascript 代码其中很多都是伪代码的写法,便有回顾和总结。参考资料包含javascript的基础...工厂模式4.桥接模式 5.复合模式6.外观模式 7.适配器模式8.装饰器

    JavaScript面向对象实现简单工厂模式

    在`JavaScript简单工厂模式.mht`文件中,可能包含了对这个实现的详细分析,包括代码的解释、运行示例以及可能的优化和改进方案。通过阅读这份文件,可以更深入地理解如何在JavaScript中应用面向对象和简单工厂模式来...

    Javascript面向对象设计一 工厂模式.docx

    工厂模式在JavaScript中是一种常见的对象创建模式,它通过封装对象的创建过程,提高了代码的灵活性。然而,它也有自身的局限性,如无法直接识别对象类型。理解并熟练运用这些模式,能够帮助开发者编写出更可维护、可...

    JavaScript设计模式.pdf

    JavaScript设计模式.pdf JavaScript设计模式是指在软件开发中使用JavaScript语言编写的设计模式。这些设计模式旨在提高代码的重用性、可读性、维护性和扩展性。以下是JavaScript设计模式的知识点总结: 1. 单体...

    Pro.JavaScript.Design.Patterns.2008

    1. 创建型模式:如工厂模式、抽象工厂模式、单例模式、建造者模式和原型模式。这些模式主要关注对象的创建,旨在提高代码的灵活性和可重用性。 2. 结构型模式:如适配器模式、装饰器模式、代理模式、桥接模式、组合...

    javascript 面向对象编程.pdf javascript 设计模式与开发实践.pdf

    在JavaScript中,常见的设计模式包括工厂模式、单例模式、观察者模式、装饰器模式、代理模式等。例如,工厂模式可以用来创建对象,避免直接使用new操作符,提高代码的可扩展性;单例模式确保一个类只有一个实例,常...

    JavaScript语言精粹(JavaScript.The.Good.Parts).pdf

    - **工厂模式**: 使用函数作为工厂函数来创建对象实例。 - **构造函数模式**: 通过构造函数创建对象实例,利用`this`关键字绑定属性和方法。 - **原型链模式**: 通过继承来扩展对象的功能。 **8. 性能优化** - **...

    javascript设计模式之工厂模式示例讲解.docx

    在JavaScript中,工厂模式是一种常用的创建型设计模式,用于创建对象的接口,但让子类决定实例化哪个类。工厂方法使得一个类的实例化延迟到其子类。 #### 二、原始对象创建方法的局限性 在原始的JavaScript编程...

    Pro.JavaScript.Design.Patterns.RETAiL.Dec.2007

    4. 设计模式的实现:书中将会涉及工厂模式(factory)、单例模式(singleton)、观察者模式(observer)、组合模式(composite)和外观模式(facade)等常用的设计模式,并展示如何在JavaScript中轻松理解并实现这些...

    Apress.Pro.JavaScript.Design.Patterns.Dec.2007

    书中可能还会深入探讨JavaScript的原型继承机制、闭包特性以及如何利用这些特性来实现某些特定的设计模式。此外,随着JavaScript在服务器端的兴起(Node.js的流行),书中也可能包含了有关异步编程模式的讨论,如回...

    包含javascript的基础语法,面向对象的实现和设计模式实现-javascript.zip

    另外,原型链是JavaScript实现继承的核心机制,所有对象都有一个`__proto__`属性,指向其构造函数的原型对象。 **设计模式** 设计模式是软件工程中经过验证的解决方案模板,它们在特定场景下提供了高效、可复用的...

    javascript工厂方式定义对象.docx

    工厂模式是一种设计模式,它提供了一种创建对象的最佳方式。在JavaScript中,工厂函数可以用来创建具有特定属性和方法的对象,而无需使用`new`关键字。这种方式的优点是创建对象的过程更加灵活,可以根据传入的参数...

    Javascript 设计模式之构造函数模式.zip

    JavaScript设计模式是编程实践中一种优秀的代码组织方式,它总结了在特定场景下解决常见问题的最佳实践。...在实际开发中,构造函数模式常常与其他设计模式(如工厂模式、单例模式等)结合使用,以应对更复杂的场景。

    设计模式_javascript_源码.zip

    在这个“设计模式_javascript_源码.zip”压缩包中,我们可以期待找到一系列JavaScript实现的设计模式示例。 1. 单例模式:确保一个类只有一个实例,并提供一个全局访问点。在JavaScript中,单例模式通常通过闭包...

    JAVASCRIPT设计模式[收集].pdf

    这些模式在实际开发中有着广泛的应用,例如单例模式常用于管理数据库连接、工厂模式可以用于创建多种相似的UI组件,观察者模式则在实现响应式编程时大放异彩。 总结来说,JavaScript设计模式作为前端开发的基石之一...

    (JavaScript.Patterns).Stoyan.Stefanov.文字版

    10. **设计模式**:书中介绍了单例模式、工厂模式、观察者模式、装饰者模式等多种经典设计模式,并展示了如何在JavaScript中应用它们以解决实际问题。 11. **性能优化**:包括DOM操作优化、代码压缩、缓存策略等,...

Global site tag (gtag.js) - Google Analytics