java基础——单例设计模式
程序员文章站
2022-03-06 18:36:10
所谓的单例设计吗,模式就是保证某个类只有一个对象实例要想满足上述的情况,首先我们需要把构造器(函数)设置成private,这样的话就不可以在类的外部通过new的方式来创建对象但是仍然可以在类的内部创建对象,创建的类的对象要通过该类的静态函数进行返回,因为静态函数中只能访问静态的成员变量,所以要定义相应的静态成员变量。单例设计模式我在这里介绍两种“饿汉式”,“懒汉式”饿汉式的:优点:线程安全(无论多少人调用,只会出现一个对象)缺点:对象的加载的时间长懒汉式:优点:用的时候才会创建...
所谓的单例设计吗,模式就是保证某个类只有一个对象实例
要想满足上述的情况,
- 首先我们需要把构造器(函数)设置成private,这样的话就不可以在类的外部通过new的方式来创建对象
- 但是仍然可以在类的内部创建对象,创建的类的对象要通过该类的静态函数进行返回,
- 因为静态函数中只能访问静态的成员变量,所以要定义相应的静态成员变量。
单例设计模式我在这里介绍两种“饿汉式”,“懒汉式”
饿汉式的:
- 优点:线程安全(无论多少人调用,只会出现一个对象)
- 缺点:对象的加载的时间长
懒汉式:
- 优点:用的时候才会创建,节省空间
- 缺点:线程不安全(因为是用的时候才会创建,所以存在产生创建的对象冲突的特点)
饿汉式代码:
public class Singleton_eHanShi {
public static void main(String[] args) {
Person p1 = Person.getInstance();
Person p2 = Person.getInstance();
System.out.println(p1);
System.out.println(p2);
p1.show();
}
}
//单例模式——>饿汉式
class Person{
//1.将构造函数私有化
private Person() {
}
//2.创建一个私有静态的内部对象向(特点:直接创建对象)
private static Person instance = new Person();
//创建一个共有的静态get方法,进行返回上面创建的对象
public static Person getInstance() {
return instance;
}
//创建一个常规方法
public void show() {
System.out.println("饿汉:Person中的show方法被调用!");
}
}
结果:
懒汉式代码:
public class Singleton_lanHanShi {
public static void main(String[] args) {
Person2 p1 = Person2.getInstance();
Person2 p2 = Person2.getInstance();
System.out.println(p1);
System.out.println(p2);
p1.show();
}
}
//单例设计模式——>懒汉式
class Person2{
//定义一个私有构造函数,使在类的外部不能够new对象
private Person2() {
}
//2.声明当前类的对象,并不进行初始化
private static Person2 instance = null;
//创建一个共有的静态get方法,进行返回上面创建的对象
public static Person2 getInstance() {
if(instance==null) {
instance = new Person2();
}
return instance;
}
//创建一个常规的方法
public void show() {
System.out.println("懒汉:Person中的show方法被调用!");
}
}
结果:
本文地址:https://blog.csdn.net/m0_45067620/article/details/111967514