思考这样一个问题
如果要在类的外部有且只有一个对象,我们需要怎么做呢
首先要保证构造方法私有化,保证不能用new的方法来在外部创建对象
一.单例设计模式
单例设计模式是一种常见的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来访问该实例。无论是懒汉式还是饿汉式,都要确保构造方法私有化,确保不能从外部直接实例化
所以我们想如果在类的外部不能创建的话 可以在内部创建,有两种形式
一种是属性创建,一种是方法返回
但是由于外部没有对象,所以两种方法都需要使用static修饰,从而通过类名.的形式调用
用static修饰的原因,是静态方法中不能直接调用非静态的属性和方法
属性私有化的原因是不能让其在外部直接获取属性,虽然他不能创建新的对象,但是它可以销毁已有对象,因此属性私有化
二.懒汉式
public class Singles {
private static Singles singles = null;
private Singles(){}
public static Singles getSingles(){
if (singles==null){
singles = new Singles();
}
return singles;
}
懒汉式的优点:占用空间少,当需要时才会创建对象
懒汉式的缺点:懒汉式每次使用时都会判断是否为空,倘若为空 才会创建对象 所以浪费时间
注意:要私有化singles的目的是为了防止在外部修改singles的值,防止已实例化但是被赋值为null从而再次实例
三.饿汉式
public class Single {
private Single(){}
private static Single single = new Single();
public static Single getSingle(){
return single;
}
}
饿汉式的优点:创建速度快,不需要判断直接创建对象
饿汉式的缺点:饿汉式不管你是否使用该对象,都会直接创建对象,从而占用内存
标签:Java,singles,创建对象,Singles,static,饿汉,设计模式,懒汉 From: https://blog.csdn.net/2401_86266665/article/details/142066382