首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

java静态工场方法

2012-09-20 
java静态工厂方法创建类的实例最常见的是new 除此外还可以使用静态工厂方法,来封装实例的细节,并且能控制

java静态工厂方法
   创建类的实例最常见的是new 除此外还可以使用静态工厂方法,来封装实例的细节,并且能控制实例的数量,减轻jvm的堆栈中的压力。

静态工厂方法与用new语句调用的构造方法相比,有以下区别:

1:构造方法的名字必须与类名相同。这一特性的优点是符合Java语言的规范,缺点是类的所有重载的构造方法的名字都相同,不能从名字上区分每个重载方法,容易引起混淆。静态工厂方法的方法名可以是任意的,这一特性的优点是可以提高程序代码的可读性,在方法名中能体现与实例有关的信息。

eg:public class TottiStaticDemo{

            private static final TottiStaticDemo demo = new TottiStaticDemo();

            public static TottiStaticDemo getInstance(){

                   return demo;

            }

            public void outPutStatic(){

                  System.out.println("Test Static Factory Class!");

            }

       }

     如果需要在其他类中调用TottiStaticDemo类中的outPutStatic方法,那么只需要使用如下语句即可:

    TottiStaticDemo.getInstance().outPutStatic();而不必使用new关键字。

2:每次执行new语句时,都会创建一个新的对象。而静态工厂方法每次被调用的时候,是否会创建一个新的对象完全取决于方法的实现。

3:new语句只能创建当前类的实例,而静态工厂方法可以返回当前类的子类的实例,这一特性可以在创建松耦合的系统接口时发挥作用。

***静态工厂方法最主要的特点是:每次被调用的时候,不一定要创建一个新的对象。利用这一特点,静态工厂方法可用来创建以下类的实例。

<1> 单例类:只有惟一的实例的类。

<2>枚举类:实例的数量有限的类。

<3>具有实例缓存的类:能把已经创建的实例暂且存放在缓存中的类。

<4>具有实例缓存的不可变类:不可变类的实例一旦创建,其属性值就不会被改变。

热点排行