189 8069 5689

javascript中工厂模式的原理分析

本篇文章给大家分享的是有关javascript中工厂模式的原理分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

创新互联成立与2013年,先为宣汉等服务建站,宣汉等地企业,进行企业商务咨询服务。为宣汉企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

介绍:前面我们介绍了简单工厂模式,简单工厂模式存在一个严重的问题:当需要扩展时必定要修改工厂类的源代码。我们虽然在第二个demo中做了一些优化,但是我们需在使用时明确指定执行方法的名字,这无疑提高了使用成本。那如何实现增加新产品而不影响已有代码?工厂模式应运而生。

定义:定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂模式让一个类的实例化延迟到其子类。工厂模式又称为工厂方法模式,又可称为虚拟构造器模式或多态工厂模式。工厂模式是一种类创建型模式。

场景:还是基于简单工厂模式的场景,我们试着用工厂模式解决弹窗类的问题。

示例:

var Dialog = function(){
  this.show = function(){
    console.log(this.name + ' is show -> ' + this.element);
  }
};
 
Dialog.createNotice = function(){
  var _dialog = new Dialog();
  _dialog.element = '
notice
';   _dialog.name = 'notice';   return _dialog; };   Dialog.createToast = function(){   var _dialog = new Dialog();   _dialog.element = '
toast
';   _dialog.name = 'toast';   return _dialog; };   Dialog.createWarnin = function(){   var _dialog = new Dialog();   _dialog.element = '
warnin
';   _dialog.name = 'warnin';   return _dialog; };     var Factory = {};   Factory.NoticeFactory = function(){   return Dialog.createNotice(); }   Factory.ToastFactory = function(){   return Dialog.createToast(); }   Factory.WarninFactory = function(){   return Dialog.createWarnin(); }   var notice = Factory.NoticeFactory(); var toast = Factory.ToastFactory(); var warnin = Factory.WarninFactory(); notice.show(); //notice is show -> 
notice
toast.show(); //toast is show -> 
toast
warnin.show(); //warnin is show -> 
warnin

对比简单工厂模式,工厂模式解决了什么问题呢?

最主要的就是将简单工厂模式的factory方法进行拆分

交由其子类也就是createToast方法实现

而将所有工厂入口拆成独立工厂类,之前的简单工厂模式在新增时需要修改工厂类,违反了开关原则

工厂模式保证新增时只做添加不做修改

项目足够大时,你可以将Factory和Dialog的子类拆成文件进行管理

在写工厂模式的这段时间,查了一些资料,发现每个人都有自己的理解

看到的一些工厂模式的demo更像是我们前面介绍简单工厂模式,为什么呢?

我们的demo参考的是java的书籍,这里面包含了抽象类这个概念,在前端只能靠自己的理解去描述

所以我们尽力通过一些差别来具体的介绍每一种模式

这里面的例子可能不是特别严谨,我后面会慢慢优化,写的详细一些只有一个目的

当有一天有人问我简单工厂模式和工厂模式的区别在哪,我希望我能给出一个我的理解

工厂模式总结:

优点:
* 增加新产品时,无需修改已存在的代码
* 只暴露工厂类,对具体实现封装在内部,使用时无需关注内部使用

缺点:
* 新增时还是需要新增具体实现以及提供具体的工厂类,一定程度增加了系统复杂度,会带来一些额外开销
* 每个工厂只生产一种产品,会导致存在大量的工厂类,大大增加了系统的维护成本和运行开销

以上就是javascript中工厂模式的原理分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。


分享标题:javascript中工厂模式的原理分析
文章来源:http://cdxtjz.cn/article/ghosho.html

其他资讯