class Singleton{
public void print(){
System.out.println("HelloWorld!");
}
}
public class TestDemo{
public static void main(String args[]){
Singletons = null ;
s= new Singleton();
s.print();
}
}
现在Singleton类里面存在有构造方法,如果没有明确定义一个构造的话,在编译时会自动生成一个什么都不做的构造方法,即:一个类至少会保留一个构造方法。
class Singleton{
private static final Singleton instance = new Singleton();
private Singleton(){} //构造方法私有化
public static Singleton getInstance(){
return instance;
}
public void print(){
System.out.println("HelloWorld!");
}
}
public class TestDemo{
public static void main(String args[]){
Singletons= Singleton.getInstance();
s.print();
}
}
一旦构造方法私有化,那么在外部无法直接通过new创建实例化对象。
在一个类定义的时候,就要对属性进行封装。要访问只能通过getter。
程序特点:构造方法私有化,在类的内部定义static属性与方法,利用static方法取得本类的实例化对象,不管外部会产生多少个Singleton类对象,但本质上只有一个实例化对象。
对于单例设计模式有两种形式:饿汉式、懒汉式。
单例是一个理解过程,核心目的:让一个类中只存在一个实例化对象。
饿汉式:
class Singleton{
private static final Singleton instance = new Singleton();
private Singleton(){} //构造方法私有化
public static Singleton getInstance(){
return instance;
}
public void print(){
System.out.println("HelloWorld!");
}
}
懒汉式:
class Singleton{
private static final Singleton instance;
private Singleton(){} //构造方法私有化
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton()
}
return instance;
}
public void print(){
System.out.println("HelloWorld!");
}
}