黑铁时代
Programing is not only one kind of technology, but also one kind of art.

  工厂模式也是很常用的一种模式,工厂模式顾名思义就是将对象作为工厂类中的产品,我们只需要告诉工厂类我们需要创建的对象的类型,工厂类就返回我指定类型的对象了。

  当我们有一系列具有类似功能的对象的时候,而且我们需要根据不同的情况创建其中的某一种对象的时候,这种情况下,我们就可以使用工厂类了。比如在项目中,我们有很多管理类,这些管理类都负责管理不同类型的对象,他们功能是类似的,而且我们根据不同的情况需要使用不同的管理类,我们就可以使用一个工厂类来代理取出管理类的这个过程。

  例子:

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 );

  注:上面的例子只是个事例,不具有应用价值。而且个人能力有限,欢迎拍砖。

posted on 2012-07-22 21:41  黑铁时代  阅读(197)  评论(0编辑  收藏  举报