分享

2.3.2 认识简单工厂

 静听沙漏 2012-02-29

2.3.2 认识简单工厂

1、简单工厂的功能

工厂嘛,就是用来造东西的。在Java里面,通常情况下是用来创造接口的,但是也可以创造抽象类,甚至是一个具体的类实例。

一定要注意,虽然前面的示例是利用简单工厂来创建的接口,但是也可以用简单工厂来创建抽象类或普通类的实例。

2、静态工厂

使用简单工厂的时候,通常不用创建简单工厂类的类实例,没有创建实例的必要。 因此可以把简单工厂类实现成一个工具类,直接使用静态方法就可以了。也就是说简单工厂的方法通常是静态的,所以也被称为静态工厂。如果要防止客户端无谓地创造简单工厂实例,还可以把简单工厂的构造方法私有化了。

3、万能工厂

一个简单工厂可以包含很多用来构造东西的方法,这些方法可以创建不同的接口、抽象类或者是类实例。一个简单工厂理论上可以构造任何东西,所以又称之为"万能工厂"。

虽然上面的实例在简单工厂里面只有一个方法,但事实上,是可以有很多这样的创建方法的,这点要注意。

4、简单工厂创建对象的范围

虽然从理论上讲,简单工厂什么都能创建,但对于简单工厂可创建对象的范围,通常不要太大,建议控制在一个独立的组件级别或者一个模块级别,也就是一个组件或模块一个简单工厂。否则这个简单工厂类会职责不明,有点大杂烩的感觉。

5、简单工厂的调用顺序示意图

简单工厂的调用顺序如图2.8所示:

(点击查看大图)图2.8 简单工厂的调用顺序示意图

6、简单工厂命名的建议

类名称建议为"模块名称+Factory"。比如,用户模块的工厂就称为UserFactory。

方法名称通常为"get+接口名称"或者是"create+接口名称"。比如,有一个接口名称为UserEbi,那么方法名称通常为getUserEbi 或者是 createUserEbi。

当然,也有一些朋友习惯于把方法名称命名为"new+接口名称"。比如,newUserEbi,我们不提倡这样做。因为new在Java中代表特定的含义,而且通过简单工厂的方法来获取对象实例,并不一定每次都是要new一个新的实例。如果使用newUserEbi,会给人错觉,好像每次都是new一个新的实例一样。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多