Pro javascript design pattern 读书笔记之 When shou the factory pattern be used
2008-11-07 16:07 wlstyle 阅读(294) 评论(0) 收藏 举报When should the factory pattern be used
最简单的方式创建一个对象就是使用关键词new和一个具体的类。在如下的情况下创建并使用一个相对复杂的工厂类较有意义。
Dynamic implementtations(动态实例化)
如果你需要在同一个接口下创建对象但是这些对象有不同的实现,就像上面的自行车例子一样。一个工厂方法或者一个简单的工厂对象能很简单地选择需要实例化的对象。在自行车的例子中。当一个顾客选择一个模式的自行车。就像下面的xhr工厂模式例子中。连接对象的类型在何时返回是基于一个因素的比如带宽和网络状态。在这些情况下,通常会有很多的类,这些类实现同一接口。在javascript中。这是最通常的使用工厂模式的原因
总结:工厂模式为同一接口的不同实现提供了可能(不同的实现取决与所在乎的因素)。
Combing setup costs(减少初始化占用资源(弱弱的这样翻译))
如果对象 have complex but related setu costs ,使用工厂类能减少每一个所需要的代码量。这是是非常现实的 如果the setups对于所有特定类型对象的实例只需要执行一次。把这个类中的this stup代码放在构造函数中是效率低下的,因为它将会被调用即使the setup已经完成。同时因为他存在在不同的类中。一个工厂方法可能是这种情况的完美解决方式。他能完成the setup一次。在这之后在外部实例化所有需要的对象。他同时将the setup 代码放置在一处(封装了代码,呵呵),而不管实例化了多少不同的类。
这在你使用一个类而需要引入外部库的时候特别实用。工厂方法能测试这些存在的库 然后动态的加载他们发现的库。这个setup代码进行了封装。这样也易于代码以后的修改。
Abstracting many small objects into one large object(抽象小对象把他放到更大的对象中)
一个工厂方法对于创建一个对象而这个对象又封装了许多的小对象很有用。我们举一个例子,想象bicycle对象的构造器。一辆自行车包含有许多部分。比如:车轮,框架,刹车。如果你不希望这些小部件和大对象耦合程度高。然后又在运行的时候挑选这些属性(车轮,框架,刹车)。一个工厂方法在这种情况下就比较完美。使用这种技术,你能在一天中创建所有的自行车而指定特定的链条。同时改变在第二天改变这个类型如果你发现一个更适宜你的。做这种改变是很简单的,因为bicycles在构造函数中不依赖与特定类型的链条。接下来的Rss resder这个例子说明了这一点。
浙公网安备 33010602011771号