工厂模式也是很常用的一种模式,工厂模式顾名思义就是将对象作为工厂类中的产品,我们只需要告诉工厂类我们需要创建的对象的类型,工厂类就返回我指定类型的对象了。
当我们有一系列具有类似功能的对象的时候,而且我们需要根据不同的情况创建其中的某一种对象的时候,这种情况下,我们就可以使用工厂类了。比如在项目中,我们有很多管理类,这些管理类都负责管理不同类型的对象,他们功能是类似的,而且我们根据不同的情况需要使用不同的管理类,我们就可以使用一个工厂类来代理取出管理类的这个过程。
例子:
var ManagerFactory = function ( name ) {
var managers = {}; // 存放注册后的管理类的构造函数
return {
registerManager: function( NAME, Class ) { // 注册管理类
managers[ NAME ] = Class;
},
getManager: function( NAME, name ) { // 根据不同的名字取出相应的管理类
if ( managers[ NAME ] )
return new managers[ NAME ]( name );
else
alert( 'You do not register this kind of Class which is ' + NAME );
}
}
}();
ManagerFactory.SCENE_MANAGER = 'SceneManger'; // 使用常量存储管理类的名字
ManagerFactory.MESSAGE_MANAGER = 'MessageManager';
function SceneManager( name ) {
this.name = name;
}
function MessageManager( name ) {
this.name = name;
}
ManagerFactory.registerManager( ManagerFactory.SCENE_MANAGER, SceneManager );
ManagerFactory.registerManager( ManagerFactory.MESSAGE_MANAGER, MessageManager );
var sceneManager = ManagerFactory.getManager( ManagerFactory.SCENE_MANAGER, 'Leo' );
var messageManager = ManagerFactory.getManager( ManagerFactory.MESSAGE_MANAGER, 'Jack' );
console.log( sceneManager.name );
console.log( messageManager.name );
注:上面的例子只是个事例,不具有应用价值。而且个人能力有限,欢迎拍砖。