JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
1、工厂模式:
虽然
Object构造函数和对象字面量都可以用来创建单个对象,但这个方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量重复的代码。为了解决这个问题,开始使用工厂模式。
利用工厂模式,可以实现不指定特定的类而创建出对象,也就是说,不需要使用
new关键字来创建特定类或子类的实例。
var TravelTeam = function(){}; TravelTeam.prototype = { register : function(model){ var person; switch(type){ case "student": person = new Student(); break; case "teacher": person = new Teacher(); break; default: person = new Doctor(); break; } return person; } } var team = new TravelTeam(); team.register(student");
问题:大多数情形下使用没有问题,但扩展性不好,如需要添加一些新的队员类型,必须修改
switch部分。
解决:工厂模式,把相同的部分单独出来交给一个简单的工厂对象:
var TeamFactory = { createTeam:function(type){ var person; switch(type){ case "student": person = new Student(); break; case "teacher": person = new Teacher(); break; default: person = new Doctor(); break; } return person; } }
TeamFactory是一个脱离于TravelTeam的单体,能降低耦合度,当需要添加一些新的队员类型的时候,只要修改TeamFactory工厂单体对象就行。
var TravelTeam = function(){}; TravelTeam.prototype = { register:function(type){ var person = TeamFactory.createTeam(type); return person; } }
工厂模式的问题:虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题(即不知道对象的类型)。
解决:构造器模式,请见:https://www.jb51.nethttps://www.geek-share.com/detail/2743573217.html。
2、抽象工厂模式
在工厂模式的基础上进行更高层次的抽象,根据共同的用途或主题来抽象出一个最高层基础工厂类,其他具有相似行为的工厂类将继承于此工厂类。
最典型的例子是了解HTML5与HTML4表单域的不同之处后,抽象出最高层的表单域工厂类,HTML5表单域工厂类和HTML4表单域工厂类都继承自该类。
工厂模式与抽象工厂模式的不同:
① 当需要在代码的其余所有部分通过屏蔽较为复杂的对象创建方法来简化某些特定对象的创建过程时,使用工厂模式很适合;
② 当需要从现有代码中的多个类中,根据这些类之间共有的目的或通用的主题,创建出一个额外的抽象层,以降低应用程序的其余开发工作的复杂性时,使用抽象工厂模式很适合。
更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
您可能感兴趣的文章:
- 深入理解JavaScript系列(38):设计模式之职责链模式详解
- JavaScript实现职责链模式概述
- JavaScript职责链模式概述
- JavaScript设计模式之模板方法模式原理与用法示例
- JavaScript设计模式之缓存代理模式原理与简单用法示例
- JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
- JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
- JavaScript设计模式之单例模式原理与用法实例分析
- JavaScript设计模式之装饰者模式定义与应用示例
- JavaScript设计模式之工厂模式简单实例教程
- JavaScript设计模式之职责链模式应用示例
- JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
- Java责任链模式定义与用法分析
- Python装饰器模式定义与用法分析
- 工厂模式、工厂方法模式和抽象工厂模式的差异分析
- PHP设计模式之工厂模式定义与用法详解
- JS设计模式之访问者模式定义与用法分析
- iOS经常使用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)
- JavaScript设计模式经典之工厂模式
- JavaScript关联数组用法分析【概念、定义、遍历】
- java两种单例模式用法分析
- Ext源码分析源码分析之Ext的继承模式解说——第一节、类的定义
- 简单工厂模式 与 抽象工厂模式
- 抽象工厂模式和工厂模式的本质区别(代码示例)
- 2.工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)(设计模式笔记)
- 电话中工厂模式和源码分析
- 三,工厂模式——抽象工厂模式
- 工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式
- 23种设计模式01---工厂模式之抽象工厂模式
- Android源码分析之简单工厂模式
- 定义应用程序的基础--模式(Bridge-桥接,Factory-工厂)