更新时间:2015年2月11日 09:17:03 贡献者:junjie
本文主要介绍JavaScript设计模式的鞋工厂模式和构造函数模式。 本文还解释了设计模式的类别,例如创建型设计模式、结构型设计模式和行为型设计模式。 有需要的同学可以参考以下
哪些是模式
前段时间准备期末考试,真是又累又伤身体。 实在是没时间更新文章了。 明天我会和大家聊聊javascript中的设计模式。
首先ecmascript工厂模式,我们需要知道的是:模式是可重用的解决方案ecmascript工厂模式,反模式是解决问题的糟糕方案。
js 反模式的常见示例
1. 将字符串传递给setTimeout和setInterval,而不是函数,这会触发eval()的内部使用。
2.在全局上下文中定义大量变量污染全局命名空间
3.改变Object类的原型
4.使用js内联,嵌入在HTML文件中的js代码很难包含在外部单元测试工具中。
5.滥用document.write。 如果在页面加载后执行docume.write,它将重绘我们所在的页面。 如果可以使用 document.creatElement 代替,请尽量不要使用 doume.write。
设计模式的类别
创意设计模式
创建型设计模式侧重于处理对象创建的机制,以适合给定情况的方式创建对象。 属于此类别的属性包括:
Constructor构造器、Factory鞋工厂、抽象表示、Prototype原型、Singleton单例和Builder生成器
结构设计模式
结构模式与对象组合有关,通常可用于寻找构建不同对象之间关系的简单方法。
属于此类别的模式包括:
装饰器、外观、享元、适配器和代理
行为设计模式
行为模式侧重于改进或简化系统中不同对象之间的通信。
行为模式包括:
Iterator迭代器、Mediator中介、Observer观察者和Visitor访问者
工厂(鞋厂)模式
为了解决多个相似对象声明的问题,我们可以使用一种叫做鞋工厂模式的方法,它就是为了解决实例化对象大量重复的问题。
复制代码代码如下:
鞋厂型号分类
鞋厂模式分为简单鞋厂、抽象鞋厂和智能鞋厂。 鞋工厂模式没有明确要求使用构造函数。
简单鞋工厂模式:使用一个类(通常是单体)来创建将来的实例。
复杂鞋工厂模式:使用泛型来确定成员变量应该是哪个具体类实例。
鞋厂模式的好处
主要用途是通过工程方法而不是new关键字来消除对象之间的耦合。 将所有实例化代码集中在一处,以避免代码重复。
鞋厂模式的缺点
对于大多数类来说,最好使用new关键字和构造函数,这样可以使代码更简单,更容易阅读。 不用查鞋厂方法就知道。
鞋工厂模式解决了重复实例化的问题,但是还有一个问题,那就是标识问题,因为无法明确它们是哪些对象的实例。
复制代码代码如下:
Alert(typeoftest1);//对象
Alert(test1instanceofObject);//true
何时使用鞋厂模式?
工厂模式主要应用于以下场景:
1.当对象或组件涉及高度复杂性时
2、当需要根据不同的环境方便地生成不同的对象实例时
3. 当处理许多共享相同属性的大型对象或组件时
构造函数(constructor)模式
ECMAScript 中可以使用构造函数(构造方法)来创建特定的对象。 这种模式正好可以解决上述鞋厂模式难以识别对象实例的问题。
复制代码代码如下:
使用构造函数的方式不仅解决了重复实例化的问题,还解决了对象识别的问题。 该模式与鞋厂模式的区别在于:
1、构造函数方法不显示创建对象(newObject());
2、直接为该对象赋予属性和技术参数;
3.无租金刑罚。
构造函数的工作方式有一些规范:
1、函数名和实例化的构造函数名相同且小写,(PS:不是强制的,但这样写有助于区分构造函数和普通函数);
2、通过构造函数创建对象,必须使用new操作符。
既然可以通过构造函数创建对象,那么这个对象从哪里来,newObject()在哪里执行呢? 执行过程如下:
1.当使用构造函数时,而是new构造函数(),则后台执行newObject();
2、将构造函数的作用域分配给new对象(即newObject()创建的对象),函数体中的this代表newObject()中的对象。
3、执行构造函数中的代码;
4.返回一个新对象(后台直接返回)。
具有原型的构造函数
js中有一个属性叫prototype。 调用js构造函数创建对象后,新对象将具有构造函数原型的所有属性。 通过这些方法,可以创建多个 Car 对象并访问相同的原型。
复制代码代码如下:
现在,run() 的单个实例可以在所有 Car 对象之间共享。