创建类的实例最常见的是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>具有实例缓存的不可变类:不可变类的实例一旦创建,其属性值就不会被改变。
分享到:
相关推荐
主要介绍了 Java静态工厂方法的实例详解的相关资料,希望通过本文大家能掌握java今天工厂方法,需要的朋友可以参考下
本文目录一、什么是静态工厂方法?二、静态工厂方法的优势三、静态工厂方法的缺点四、总结 一、什么是静态工厂方法? 对于类而言,在我们需要获取一个实例时,最传统的方法都是通过new新建一个对象,这是jvm通过调用...
调用实例工厂方法创建bean,与调用静态工厂方法创建bean 的用法基本相似。 区别如下: ·调用实例工厂方法创建bean 时,必须将实例工厂配置成bean 实例。 而静态工厂方法则无须配置工厂bean。 ·调用实例工厂方法...
JavaEE spring静态工厂创建实例
主要介绍了java用静态工厂代替构造函数使用方法和优缺点,需要的朋友可以参考下
声明的返回类型的任何子类都是允许的。返回对象的类也可以随每次发布而不同。EnumSet 类(详见第 36 条)没有公共构造方法,只有静态工厂。在 OpenJDK
从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂...
Spring依赖注入使用静态工厂设注入demo。完整可运行。
声明的返回类型的任何子类都是允许的。返回对象的类也可以随每次发布而不同。EnumSet 类(详见第 36 条)没有公共构造方法,只有静态工厂。在 OpenJDK
静态工厂demo.rar 两个demo一个是使用了静态工厂方法,一个没有使用。
主要介绍了Java设计模式之静态工厂模式,简单说明了静态工厂模式的概念、原理、实现与使用方法,需要的朋友可以参考下
它包含三种静态工厂方法,包括: 一种创建规则凸多边形的方法。 一种创建规则星形多边形的方法。 一种创建圆的方法。 API public static Path regularConvexPolygon(int left, int top, int right, int bottom,...
《Effective Java》第三版中文版目录 第一章 介绍 1 第二章 创建和销毁对象 4 1 考虑用静态工厂方法替换构造器 4 2 当遇到多个构造器参
今晚看代码的时候看到工厂类中方法和参数都使用static修饰,于是很好奇的想为什么一定... 使用工厂模式,可以取而代之的调用工厂方法: Foo x = Foo.create() 工厂类的构造方法被标记为private,所以构造方法除了
通过实例工厂方法和静态工厂方法实例化spring bean的例子。
工厂方法: 在工厂方法设计模式中,工厂类不再负责产品的实列创建,而是将产品实例的创建交给抽象子类来 来负责创建。 c.抽象工厂:使用抽象工厂主要用于处理多产品族多级别产品的创建。 2.单例模式:确保有且只有...
1 饿汉式单例类.在类初始化时,已经自行实例化 class EagerSingleton { private static final ... * * 静态工厂方法 */ public static EagerSingleton getInstance() { return m_instance; } }
简单工厂模式又叫静态工厂模式,顾名思义,它是用来实例化目标类的静态类。下面我主要通过一个简单的实例说明简单工厂及其优点。 单态模式的定义: Singleton模式主要作用是保证在Java应用程序中,一个类Class只有...
Spring 的 IOC 容器反射 + 抽象工厂模式 JDBC 加载数据库驱动类反射的优势及缺陷 增加程序的灵活性破坏类的封装性 性能损耗 代理模式 静态代理与动态代理常见的动态代理实现JDK Proxy CGLIB JDK Proxy 和 CGLIB 的...