创建类的实例最常见的是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静态工厂方法是一种特殊的工厂方法,它可以返回类的实例,而不是通过构造器来获取实例。静态工厂方法通常以valueOf、getInstance、newInstance等命名,具有三个特点:具名、环保、...
3. **不支持泛型的类型推断**:Java中的泛型在静态工厂方法上不支持类型推断,这意味着在调用静态工厂方法时必须显式指定类型参数。 4. **非final类的静态工厂方法可能导致意外的非唯一实例**:如果类非`final`,...
本篇将详细介绍如何在Spring中使用静态工厂方法来创建实例。 首先,让我们理解什么是静态工厂方法。静态工厂方法是类中的一个静态成员方法,它不依赖于类的实例,而是通过类名直接调用,返回一个对象。这种方法与...
本篇将详细讲解如何使用静态工厂方法进行依赖注入,结合提供的"SpringIOCTest3"项目进行说明。 首先,理解依赖注入的基本概念。依赖注入是指在运行时,由容器(如Spring IoC容器)负责创建对象并管理这些对象之间的...
在Java编程中,静态工厂方法和构造函数都是用来创建对象的常见方式,但它们在特定场景下有着各自的特点和适用性。本篇文章将深入探讨静态工厂方法代替构造函数的使用方法以及它们的优缺点。 首先,我们来看一下静态...
从提供的部分节选内容来看,文档专注于讨论在Java中使用静态工厂方法的好处及其与构造方法的区别,以下是对这些内容的详细展开。 1. 静态工厂方法与构造方法的区别 在Java中,获取类的实例通常是通过构造方法来实现...
在Java编程中,静态工厂是一种创建对象的...总结,静态工厂方法是Java中一种重要的设计模式,它可以提供更高级别的控制力和灵活性。通过分析和比较`静态工厂demo.rar`中的两个示例,我们可以更好地理解和应用这一模式。
调用实例工厂方法创建bean,与调用静态工厂方法创建bean 的用法基本相似。 区别如下: ·调用实例工厂方法创建bean 时,必须将实例工厂配置成bean 实例。 而静态工厂方法则无须配置工厂bean。 ·调用实例工厂方法...
本篇将详细探讨两种工厂方法——实例工厂方法和静态工厂方法,用于创建Spring Bean。 首先,我们要理解Spring Bean的概念。Spring Bean是Spring IoC容器管理的对象,这些对象的生命周期、依赖关系以及初始化行为由...
Effective Java是一本关于Java编程语言的经典书籍,本笔记主要总结了Java语言的发展历程、静态工厂方法的应用、构造器模式的使用等重要知识点。 一、Java语言的发展历程 Java语言的发展可追溯到1991年,当时由...
工厂模式分为三种主要类型:简单工厂模式、工厂方法模式和抽象工厂模式。 **1. 简单工厂模式(Simple Factory)** 简单工厂模式中,有一个中心工厂类负责创建对象。这个工厂类通常由一个静态方法构成,根据传入的...
工厂模式分为三种主要类型:简单工厂模式、普通工厂模式(也称为工厂方法模式)和抽象工厂模式。 1. **简单工厂模式**: - 简单工厂模式中,有一个中心工厂类,它负责根据输入条件(通常是一个参数)来创建具体的...
在Spring框架中,Bean的创建方式多样,其中两种常见的非XML配置方式是通过静态工厂方法和实例工厂方法来创建Bean。这些方法为Spring容器提供了更灵活的Bean实例化策略,让我们深入了解一下这两种方法。 首先,静态...
声明的返回类型的任何子类都是允许的。返回对象的类也可以随每次发布而不同。EnumSet 类(详见第 36 条)没有公共构造方法,只有静态工厂。在 OpenJDK
从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂...
5. **用途**:静态方法常用于工具类、工厂方法、类初始化方法(例如,`main`方法就是静态的,它是Java程序的入口点)等场景,它们通常执行与对象状态无关的操作。 举个例子,我们可以创建一个计算两个数字之和的...
例如,在工厂方法模式中,静态方法常常用来创建对象实例。示例代码如下: ```java public class AnimalFactory { public static Animal getAnimal(String type) { if ("dog".equals(type)) { return new Dog(); ...
- 简单工厂模式是一种静态工厂方法模式,它包含一个静态工厂类,负责创建对象。在这个例子中,可能有一个名为`Factory`的类,其中包含一个静态方法,如`createInstance()`,这个方法根据输入参数返回相应的对象实例...
本文将深入探讨简单工厂、工厂方法和抽象工厂这三种在Java中常用的创建型模式,通过实例解析帮助你更好地理解和应用它们。 ### 1. 简单工厂模式 简单工厂模式是一种最为基础的创建型模式,它提供一个静态方法来...