创建对象的考虑

 
       构造函数是java类的最传统创建方式,除此之外,我们还可以选择经典的设计模式,经典的创建型设计模式包含了四种,factory,abstract factory,singleton和prototype。另外,在java中还有一种经常使用的模式---静态工厂方法(我们可以认为这是创建型模式的一种新的补充)。
       什么是静态工厂方法?其实很简单,也就是类的设计者将构造函数设计为保护的或者私有的,而提供静态成员函数负责返回给客户已经创建好的对象。
这样做有什么优点呢?
1)首先引入了静态函数,增加了间接性,这样也就带来了灵活性,这一点和其他的创建型模式一样。设计者可在内部创建单例对象,也可以预先创建,以提高性能,也可以创建子对象,返回父对象的引用。策略非常灵活。
2)普通构造函数名称固定,不如静态函数的函数名称可以随意指定,静态函数的名称可以暗示用户创建的方式,创建的前提条件或者创建返回的结果
 
这样做也有缺点:
静态工厂方法可能会被误认为普通的静态成员函数,因此需要文档明确指出,java世界里已经有了约定俗成的惯用命名,如valueOf和getInstance
 
       那么我们有这么多方式创建一个对象,设计一个类时我们该如何考虑呢?我觉得至少要想一想哪一个更合适,如果没有必需的理由,构造函数作为最普遍的标准方式应该是首选。
 

你可能感兴趣的:(java,设计模式,prototype,文档)