Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
 
 

工厂模式:
1.1、简单工厂:
另外使用一个类(通常是一个单例)来生成实例,示例程序;
1.2、工厂模式:
使用子类来决定一个成员变量应该是哪个具体的类的实例,示例程序;
1.3、工厂模式的适用场景:
1.3.1、动态实现:
XHR的例子,使用简单工厂,注意在工厂方法中使用到的memoizing技术;
专用型连接对象:创建两个新的处理器类:
QueuedHandler:在发起新的请求之前先确保所有请求都已经成功处理。
OfflineHandler:在用户处于离线状态时把请求缓存起来。
示例程序
在运行时选择连接对象:示例程序
1.3.2、节省设置开销:
把设置代码放到类的构造函数中并不是一种高效的做法,这是因为即便设置工作已经完成,每次创建新实例的时候这些代码还是会执行,而且这样做会把设置代码分散到不同的类中。工厂方法非常适合于这种场合。它可以再实例化所有需要的对象之前一次性地进行设置。
1.3.3、用许多小型对象组成一个大对象:
RSS阅读器:由ListDisplay, XhrHandler, conf对象组成,包括fetchFeed, parseFeed, showError, stopUpdates, startUpdates方法。这是一个阐明“用许多小型对象组成一个大对象”这个用途的绝佳示例。它使用工厂模式,先创建出所有要用到的对象,然后再生成并返回那个作为容器的FeedReader类型大对象:示例程序
1.4、优点:
弱化对象的耦合,防止代码的重复。在一个方法中进行类的实例化,可以消除重复性的代码。这是在用一个对接口的调用取代具体的实现。这些都有助于创建模块化的代码。使用工厂模式,你可以先创建一个抽象的父类,然后再子类中创建工厂方法,从而把成员对象的实例化推迟到更专门化的子类中进行。
通过使用工厂方法而不是new关键字及具体类,你可以把所有实例化代码集中在一个位置,可以大大简化更换所用的类或在运行期间动态选择所用的类的工作。
1.5、缺点:
如果不需要再运行期间在一系列可互换的类中进行选择,那就不应该使用工厂方法。大多数类最好使用new关键字和构造函数公开初始化,使代码更简单易读,一眼就看到调用的是什么构造函数而不用查看工厂方法。
如果拿不定主意,就不要用工厂模式,因为在代码重构时还有机会使用工厂模式。

Morty Proxy This is a proxified and sanitized view of the page, visit original site.