学习Java有一年多,很多基础知识是了解的,有些知道怎么用,但不明白,它是怎么来的。
经常在书上看到介绍类里面的构造方法,静态方法,普通方法与静态变量,调用顺序,但不明白它的真正用处。
今天走进公司时,我突然间,想到了Java的类中,方法,变量的调用顺序重要吗,我一下就想到了单例模式,因为我之前只是知道单例模式的用处,但不明白它怎么来的,单例模式不就是根据类的启动顺序写出来,因为类会先调用static,然后,再是构造函数,可见有些知识点,你只要灵活一点,就大有用处,当然不知,大家认为我的观点对不对,我认为是这样的。
package com.fanshe;
public class TestB {
public static void main(String[] args) {
TestA tmp = TestA.getSingleton();
tmp.Show("TestB调用show");
tmp.setX(20);
System.out.println(tmp.getX());
TestC tmpc = new TestC();
tmpc.Td();
}
}
//先调用静态变量与静态方法,再是构造方法
package com.fanshe;
public class TestA {
private static TestA Singleton = null;
int x;
public TestA() {
x = 15;
System.out.println("进入构造方法...");
}
public static TestA getSingleton(){
System.out.println("Singleton = "+Singleton);
if (Singleton == null){
System.out.println("进入单例...");
Singleton = new TestA();
}
return Singleton;
}
public void Show(String str)
{
System.out.println(str);
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
package com.fanshe;
public class TestC {
public void Td()
{
TestA.getSingleton().Show("TestC调用show");
System.out.println(TestA.getSingleton().getX());
}
}
结果如下:
Singleton = null
进入单例...
进入构造方法...
TestB调用show
20
Singleton = com.fanshe.TestA@dd7404
TestC调用show
Singleton = com.fanshe.TestA@dd7404
20
分享到:
相关推荐
Java设计模式之单例模式的七种写法 单例模式是一种常见的设计模式,它确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机的驱动程序对象常...
在Java中,实现单例模式通常涉及到以下几个关键点: 1. **私有构造函数**:防止外部直接实例化。 2. **静态私有成员变量**:用于保存该类的唯一实例。 3. **公有静态工厂方法**:用于检查实例是否存在,若不存在则...
在Java中,单例模式的实现通常涉及到类的构造器、静态方法以及线程安全的考虑。 1. **单例模式的核心思想** - **唯一性**:保证类只有一个实例,避免多个实例导致资源浪费或状态不一致。 - **全局访问点**:提供...
- **单例模式(Singleton)**:确保一个类只有一个实例,并提供全局访问点。 - **工厂方法模式(Factory Method)**:定义一个用于创建对象的接口,让子类决定实例化哪一个类。 - **抽象工厂模式(Abstract ...
1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供全局访问点。在Java中,通常通过私有构造器和静态工厂方法来实现。单例模式常用于配置中心、线程池等场景。 2. **工厂模式(Factory Method)**:...
1. **单例模式(Singleton)**:确保一个类只有一个实例,并提供一个全局访问点。这是为了控制资源的访问,例如数据库连接或日志对象。 2. **工厂方法模式(Factory Method)**:定义了一个创建对象的接口,但允许...
工厂方法模式(Factory Method Pattern):工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法把类的实例化推迟到子类。UML类图中,工厂方法模式包括产品接口Product,具体产品类...
2. **单例模式(04-单例模式)**:单例模式确保一个类只有一个实例,并提供一个全局访问点。在Java中,可以使用双重检查锁定、静态内部类或枚举等方式实现线程安全的单例。 3. **装饰者模式(03-装饰者模式)**:装饰者...
- **工厂模式**:定义一个用于创建对象的接口,让子类决定实例化哪一个类。 - **抽象工厂模式**:提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。 - **单例模式**:确保一个类只有...
在Java编程语言中,继承是面向对象特性的重要组成部分,它允许一个类(子类)从另一个类(父类)继承属性和方法。了解Java中继承关系的加载顺序对于理解和优化程序性能至关重要。以下是对这个主题的详细阐述: 1. ...
工厂方法模式定义了一个用于创建对象的接口,但让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 **应用场景:** 当你希望一个类的实例化可以被延迟到子类时,或者你需要为不同类型的对象提供一...
这种模式包含一个创建对象的接口,但让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。 **应用场景:** 当类确定了如何创建对象但不确定应该创建哪些具体的对象时,可以使用工厂方法模式。比如,...
1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。防止多实例引发的问题,常用于配置中心或缓存管理。 2. **工厂模式**:提供一个创建对象的接口,但让子类决定实例化哪一个类。工厂方法让类的实例化...
2. **工厂模式(Factory)**:提供一个接口来创建对象,但让子类决定实例化哪个类。Java中的工厂方法通常通过抽象工厂类或接口来实现。 3. **抽象工厂模式(Abstract Factory)**:为创建相关或相互依赖的对象族...
其中,懒汉式单例模式在首次调用时才创建实例,但在多线程环境下,需要使用`synchronized`关键字或双重检查锁定(DCL)来保证线程安全。 ### 2. 工厂模式(Factory Pattern) 工厂模式是一种创建型设计模式,它...
工厂方法模式则为创建对象提供了一个接口,使得子类可以决定实例化哪一个类,常用于解耦对象的创建与使用。建造者模式允许我们分步骤构建复杂对象,而不用担心构造过程的顺序问题。 结构型模式中的适配器模式能将不...
- **单例模式**:确保一个类仅有一个实例,并提供一个访问它的全局访问点。 - **优点**:控制资源消耗,提高性能。 - **应用场景**:当需要频繁实例化然后销毁的对象。 #### 结构型模式详解 - **适配器模式**...
2. **工厂模式**:提供创建对象的接口,但让子类决定实例化哪一个类。工厂模式是类的创建模式,是其他创建模式的基础。 3. **抽象工厂模式**:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类...
- 单例模式:确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。 - 建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 - 原型模式:用于创建重复的对象,同时又...
2. **单例模式**: 单例模式确保一个类只有一个实例,并提供一个全局访问点。在Java中,单例模式通常用于控制资源的访问,例如数据库连接池、线程池等。 3. **建造者模式**: 建造者模式是一种创建型设计模式,它提供...