Javascript设计模式的工厂模式和构造器模式

Javascript设计模式的工厂模式和构造器模式
模式是什么

最近,为期末考试做准备,请再身体一次,今天不是更新文章的空闲时间,我们用javascript来谈论设计模式。

首先,我们需要知道的是,模式是一个可重用的解决方案,而反模式对特定的问题是一个糟糕的解决方案。

js反模式的常见实例

1。传递字符串setTimeout和setInterval,不是函数,由此引发的内部使用eval()。

2。在全局上下文中定义大量变量以污染全局名称空间

三.修改对象类的原型

4。在内联表单中使用js,嵌入在HTML文件中的js代码不包含在外部单元测试工具中。

5段,滥用。如果我们执行docume.write加载页面后,它将改写我们的网页。我们可以用document.createlement代替docume.write。

设计模式分类

创新设计模式

创新设计模式的重点是处理对象创建机制,以以适合给定情况的方式创建对象:

构造函数、工厂工厂、抽象抽象、原型原型、单例单例和生成器生成器。

结构设计模式

结构模式与对象的组合有关,通常可以用来寻找在不同对象之间建立关系的简单方法

属于这一类的模式包括:

装饰装修、外立面美观,轻量级的享受,适配器,适配器,和代理

行为设计模式

行为模式侧重于改进或简化系统中不同对象之间的通信。

行为模式包括:

迭代器迭代器、中介中介体、观察者和访问者

工厂(工厂)模式

为了解决多个类似的对象声明的问题,我们可以使用一种称为工厂模式,这是解决实例化对象产生很多重复的问题。

复制代码代码如下所示:
函数CreateObject(姓名、年龄、职业){ / /功能集中化

var obj =新的对象();

obj.name =名称;

obj.age =年龄;

obj.profession =专业;

obj.move =函数(){

返回this.name ++ this.age +从事+ this.profession;

};

返回对象;

}

var test1 = CreateObject('trigkit4 ',22,'programmer '); / /初审

Var test2 = createObject ('mike', 25,'engineer'); / / second examples

警报(test1.move());

警报(test2.move());
工厂模式分类

工厂模式分为简单工厂、抽象工厂和智能工厂,工厂模式不显示构造函数。

简单工厂模式:使用类(通常是单体)生成实例。

复杂工厂模式:使用子类来确定哪个特定的类应该是成员变量的实例。

工厂模型的利润

主要优点是可以通过使用工程方法而不是新关键字来消除对象之间的耦合,所有实例化的代码集中在一个位置,以防止代码重复。

工厂模式的弊端

大多数类最好使用新关键字和构造函数来使代码更易于阅读。

工厂模式解决了重复实例化的问题,但还有一个问题,那就是识别问题,因为不可能准确地找出它们是哪一个对象。

复制代码代码如下所示:

警报(typeof test1); / /对象

警报(test1实例对象); / /真的
工厂模式是什么时候使用的

工厂模式主要用于以下场景:

1。当对象或组件涉及到高复杂性时

2。当对象的不同实例需要根据它们所在的不同环境轻松地生成时

三.当处理许多共享相同属性的小对象或组件时

构造函数(构造函数)模式

构造函数(施工方法)可用于在ECMAscript创建一个特定的对象。这种模式可以解决工厂模式无法识别的对象实例上面的问题。

复制代码代码如下所示:
函数车(模型,年份,英里){构造函数模式

方法=模型;

this.year =年;

this.miles =英里;

this.run =函数(){

回归方法+ 做了+ this.miles +英里;

}

}

VaR苯=新车('benz ',201420000);

宝马=新汽车(宝马)

警报(苯是车); / /明确承认他从属于的车,真的

console.log(Benz.run());

console.log(BMW.run());
使用构造函数方法解决了重复实例化问题,解决了对象识别问题。模式和工厂模式之间的区别是:

1。构造函数方法不显示创建对象(新对象());

2。直接将属性和方法分配给该对象。

三.没有交还的声明。

构造函数的方法有一些规范:

1。函数名和实例化结构名是相同的和大写的(ps不是强制的,但它有助于区分构造函数和普通函数)。

2。构造函数必须使用新操作符来创建对象。

由于对象可以由构造函数创建,对象来自何处,新对象()在何处执行执行过程如下:

1。使用构造函数和新构造函数()时,新对象()将在后台执行;

2。构造函数的范围被赋予新对象(即,由新对象())创建的对象,函数中的这个对象表示新对象()的对象)。

三.在构造函数中执行代码;

4。返回一个新对象(后台直接返回)。

原型构造函数(构造函数)

js中有一个名为原型的属性,在调用JS构造函数创建一个对象之后,这个新对象将拥有构造函数原型的所有属性,这样就可以创建多个汽车对象并访问相同的原型。

复制代码代码如下所示:
功能车(型号,年,英里){

方法=模型;

this.year =年;

this.miles =英里;

}

(car.prototype.run =功能){

回归方法+ 做了+ this.miles +英里;

};

VaR苯=新车('s350 ',201020000);

福特汽车('ford var =新,201212000);

Console.log((苯。运行)); / / S350做了20000英里

Console.log (Ford.run ());
现在可以在所有的汽车对象之间共享单个运行()实例。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部