首页 web前端 js教程 javascript设计模式之工厂模式示例讲解_基础知识

javascript设计模式之工厂模式示例讲解_基础知识

May 16, 2016 pm 04:57 PM
工厂模式

javaScript工厂方式原始的方式

因为对象的属性可以在对象创建后动态定义,这在 JavaScript 最初引入时都会编写类似下面的代码

复制代码 代码如下:

var oCar = new Object;
oCar.color = "blue";
oCar.doors = 4;
oCar.mpg = 25;
oCar.showColor = function() {
  alert(this.color);
};

在上面的代码中,创建对象 car。然后给它设置几个属性:它的颜色是蓝色,有四个门,每加仑油可以跑 25 英里。最后一个属性实际上是指向函数的指针,意味着该属性是个方法。执行这段代码后,就可以使用对象 car。不过这里有一个问题,就是可能需要创建多个 car 的实例,这显然不是很好的方式。

解决方案:工厂方法
要解决该问题,开发者创造了能创建并返回特定类型的对象的工厂函数。例如,函数 createCar() 可用于封装前面列出的创建 car 对象的操作:

复制代码 代码如下:

function createCar(sColor,iDoors,iMpg) {
  var oTempCar = new Object;
  oTempCar.color = sColor;
  oTempCar.doors = iDoors;
  oTempCar.mpg = iMpg;
  oTempCar.showColor = function() {
    alert(this.color);
  };
  return oTempCar;
}

var oCar1 = createCar("red",4,23);
var oCar2 = createCar("blue",3,25);

oCar1.showColor();        //输出 "red"
oCar2.showColor();        //输出 "blue"

调用此工厂函数,将创建新对象,并赋予它所有必要的属性,给 createCar() 函数加上参数,即可为要创建的 car 对象的 color、doors 和 mpg 属性赋值。这使两个对象具有相同的属性,却有不同的属性值。该方法有个不好的地方在于每创建一个car对象(即调用一次createCar函数)都会重复的为每个对象创建showColor 方法,而这时没有必要的而事实上,每个对象都共享同一个函数。于是我们尝试在函数之外去声明其方法属性。

在工厂函数外定义对象的方法
有些开发者在工厂函数外定义对象的方法,然后通过属性指向该方法,从而避免这个问题:

复制代码 代码如下:

function showColor() {
  alert(this.color);
}

function createCar(sColor,iDoors,iMpg) {
  var oTempCar = new Object;
  oTempCar.color = sColor;
  oTempCar.doors = iDoors;
  oTempCar.mpg = iMpg;
  oTempCar.showColor = showColor;
  return oTempCar;
}

var oCar1 = createCar("red",4,23);
var oCar2 = createCar("blue",3,25);

oCar1.showColor();        //输出 "red"
oCar2.showColor();        //输出 "blue"

在上面这段重写的代码中,在函数 createCar() 之前定义了函数 showColor()。在 createCar() 内部,赋予对象一个指向已经存在的 showColor() 函数的指针。从功能上讲,这样解决了重复创建函数对象的问题;但是从语义上讲,该函数不太像是对象的方法。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
两个点博物馆:所有展览以及在哪里可以找到它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

java框架中工厂模式的应用场景有哪些? java框架中工厂模式的应用场景有哪些? Jun 01, 2024 pm 04:06 PM

工厂模式用于解耦对象的创建过程,将其封装在工厂类中,使之与具体类解耦。在Java框架中,工厂模式应用于:创建复杂对象(如Spring中的beans)提供对象隔离,增强可测试性和可维护性支持扩展,通过添加新工厂类增加对新对象类型的支持

java工厂模式有哪些好处 java工厂模式有哪些好处 Dec 25, 2023 pm 05:40 PM

java工厂模式的好处:1、降低系统的耦合度;2、提高代码的复用性;3、隐藏对象的创建过程;4、简化对象的创建过程;5、支持依赖注入;6、提供更好的性能;7、增强可测试性;8、支持国际化;9、促进开放封闭原则;10、提供更好的扩展性。详细介绍:1、降低系统的耦合度,工厂模式通过将对象的创建过程集中到一个工厂类中,降低了系统的耦合度;2、提高代码的复用性等等。

如何在Golang中应用工厂模式 如何在Golang中应用工厂模式 Apr 04, 2024 am 11:33 AM

工厂模式在Go中,工厂模式允许创建对象,无需指定具体类:定义一个表示对象的接口(例如Shape)。创建实现该接口的具体类型(例如Circle和Rectangle)。创建工厂类,根据给定的类型创建对象(例如ShapeFactory)。在客户端代码中使用工厂类创建对象。这种设计模式增强了代码的灵活性,无需直接耦合到具体类型。

深入解析Java工厂模式:区分和应用简单工厂、工厂方法和抽象工厂的不同 深入解析Java工厂模式:区分和应用简单工厂、工厂方法和抽象工厂的不同 Dec 28, 2023 pm 03:09 PM

Java工厂模式详解:理解简单工厂、工厂方法和抽象工厂的区别与应用场景引言在软件开发过程中,面对复杂的对象创建和初始化过程,我们往往需要使用工厂模式来解决这一问题。Java作为一种常用的面向对象编程语言,提供了多种工厂模式的实现方式。本文将详细介绍Java工厂模式的三种常见实现方式:简单工厂、工厂方法和抽象工厂,并且对它们的区别以及应用场景进行深入分析。一、

C++ 函数重载和重写中单例模式与工厂模式的运用 C++ 函数重载和重写中单例模式与工厂模式的运用 Apr 19, 2024 pm 05:06 PM

单例模式:通过函数重载提供不同参数的单例实例。工厂模式:通过函数重写创建不同类型的对象,实现创建过程与具体产品类的解耦。

Java工厂模式详解:简单工厂、工厂方法和抽象工厂 Java工厂模式详解:简单工厂、工厂方法和抽象工厂 Dec 28, 2023 am 10:23 AM

Java工厂模式详解:简单工厂、工厂方法和抽象工厂工厂模式是一种常用的设计模式,它用于根据不同的需求动态创建对象,将对象的创建与使用分离,提高代码的可复用性和可扩展性。在Java中,工厂模式主要有三种形式:简单工厂、工厂方法和抽象工厂。一、简单工厂模式简单工厂模式是最基本的工厂模式,也是最简单的一种形式。它通过一个工厂类来创建对象,根据不同的参数来决定创建哪

理解PHP面向对象编程中的工厂模式 理解PHP面向对象编程中的工厂模式 Aug 10, 2023 am 10:37 AM

理解PHP面向对象编程中的工厂模式工厂模式是一种常用的设计模式,它用于创建对象的过程中将对象的创建和使用解耦。在PHP面向对象编程中,工厂模式可以帮助我们更好地管理对象的创建和生命周期。本文将通过代码示例来详细介绍PHP中的工厂模式。在PHP中,我们可以通过使用工厂模式来实现对象的创建和初始化过程,而不是直接使用new关键字。这样做的好处是,如果将来需要改变

PHP 设计模式:通往代码卓越的道路 PHP 设计模式:通往代码卓越的道路 Feb 21, 2024 pm 05:30 PM

导言PHP设计模式是一组经过验证的解决方案,用于解决软件开发中常见的挑战。通过遵循这些模式,开发者可以创建优雅、健壮和可维护的代码。它们帮助开发者遵循SOLID原则(单一职责、开放-封闭、Liskov替换、接口隔离和依赖反转),从而提高代码的可读性、可维护性和可扩展性。设计模式的类型有许多不同的设计模式,每种模式都有其独特的目的和优点。以下是一些最常用的php设计模式:单例模式:确保一个类只有一个实例,并提供一种全局访问此实例的方法。工厂模式:创建一个对象,而不指定其确切类。它允许开发者根据条件

See all articles