程序设计模式的工厂(Factory)模式
2013-05-16 14:43
218 查看
工厂(Factory)模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。
工厂就是把成员对象的创建工作转交给一个外部对象,好处在于消除对象之间的耦合(何为耦合?就是相互影响)。通过使用工厂方法而不是new关键字及具体类,可以把所有实例化的代码都集中在一个位置,有助于创建模块化的代码,这才是工厂模式的目的和优势。
举个例子:你有一个大的功能要做,其中有一部分是要考虑扩展性的,那么这部分代码就可以考虑抽象出来,当做一个全新的对象做处理。好处就是将来扩展的时候容易维护 - 只需要操作这个对象内部方法和属性,达到了动态实现的目的。非常有名的一个示例 - XHR工厂:
工厂模式又区分简单工厂模式和抽象工厂模式,上面介绍的是简单工厂模式,这种模式用的更多也更简单易用。抽象工厂模式的使用方法就是 - 先设计一个抽象类,这个类不能被实例化,只能用来派生子类,最后通过对子类的扩展实现工厂方法。 示例:
工厂就是把成员对象的创建工作转交给一个外部对象,好处在于消除对象之间的耦合(何为耦合?就是相互影响)。通过使用工厂方法而不是new关键字及具体类,可以把所有实例化的代码都集中在一个位置,有助于创建模块化的代码,这才是工厂模式的目的和优势。
举个例子:你有一个大的功能要做,其中有一部分是要考虑扩展性的,那么这部分代码就可以考虑抽象出来,当做一个全新的对象做处理。好处就是将来扩展的时候容易维护 - 只需要操作这个对象内部方法和属性,达到了动态实现的目的。非常有名的一个示例 - XHR工厂:
1 var XMLHttpFactory =function(){}; //这是一个简单工厂模式 2 XMLHttpFactory.createXMLHttp =function(){ 3 var XMLHttp = null; 4 if (window.XMLHttpRequest){ 5 XMLHttp = new XMLHttpRequest() 6 }elseif (window.ActiveXObject){ 7 XMLHttp = new ActiveXObject("Microsoft.XMLHTTP") 8 } 10 return XMLHttp; 11 } 12 //XMLHttpFactory.createXMLHttp()这个方法根据当前环境的具体情况返回一个XHR对象。 13 var AjaxHander =function(){ 14 var XMLHttp = XMLHttpFactory.createXMLHttp(); 15 ... 16 }
工厂模式又区分简单工厂模式和抽象工厂模式,上面介绍的是简单工厂模式,这种模式用的更多也更简单易用。抽象工厂模式的使用方法就是 - 先设计一个抽象类,这个类不能被实例化,只能用来派生子类,最后通过对子类的扩展实现工厂方法。 示例:
1 var XMLHttpFactory =function(){}; //这是一个抽象工厂模式 2 XMLHttpFactory.prototype = { 3 //如果真的要调用这个方法会抛出一个错误,它不能被实例化,只能用来派生子类 4 createFactory:function(){ 5 thrownew Error('This is an abstract class'); 6 } 7 } 8 //派生子类,文章开始处有基础介绍那有讲解继承的模式,不明白可以去参考原理 9 var XHRHandler =function(){ 10 XMLHttpFactory.call(this); 11 }; 12 XHRHandler.prototype =new XMLHttpFactory(); 13 XHRHandler.prototype.constructor = XHRHandler; 14 //重新定义createFactory 方法 15 XHRHandler.prototype.createFactory =function(){ 16 var XMLHttp =null; 17 if (window.XMLHttpRequest){ 18 XMLHttp =new XMLHttpRequest() 19 }elseif (window.ActiveXObject){ 20 XMLHttp =new ActiveXObject("Microsoft.XMLHTTP") 21 } 22 return XMLHttp; 23 }
相关文章推荐
- 设计模式之工厂模式(Factory)
- 游戏程序的设计模式--工厂模式
- 设计模式(一)工厂模式Factory(创建型)
- 设计模式之简单工厂(SimpleFactory)
- 设计模式之简单工厂(Factory method)
- 【1】设计模式之工厂模式(Factory)
- 设计模式--工厂方法(FactoryMethod)
- 【设计模式】创建型模式之工厂方法Factory Method
- 设计模式(C++版)之(factory)工厂模式
- 设计模式学习--工厂模式(Factory Pattern)
- Java设计模式之工厂模式(Factory)
- 设计模式之——Factory(工厂模式)
- 设计模式之——Factory(工厂模式)
- 设计模式之美:Factory Method(工厂方法)
- 设计模式示例一 Factory Method(工厂方法)
- 设计模式-3.3 Factory Method(工厂方法) 对象创建型模式
- JAVA设计模式——工厂方法(Factory Method)模式
- 设计模式一 之 工厂模式(Factory Method)
- 设计模式之工厂模式 factory(一)
- 设计模式杂谈:创建型模式之工厂方法(Factory Method)