在《Thinking In Java》中读到单例模式自己写几个基于java的单例模式
public class ConnectionManager
{
public static void main (String[] args)
{
Connection.access().say();
Connection.access().say();
Connection1.access().say();
Connection1.access().say();
}
}
//懒汉式单例模式
class Connection
{
//私有静态,已实例化的该类引用
private static Connection myInstance=new Connection();
//私有构造函数
private Connection ()
{
System.out.println("Connection构造函数");
}
//共有静态访问函数
public static Connection access()
{
return myInstance;
}
//该类具体方法
public void say()
{
System.out.println("\nHello ~~");
System.out.println(this);
}
}
//饿汉式单例模式
class Connection1
{
//私有静态,该类引用,并未实例化
private static Connection1 myInstance;
//私有构造函数
private Connection1 ()
{
System.out.println("------------\nConnection1构造函数");
}
//共有静态访问函数 在使用时才会实例化
public static Connection1 access()
{
if (myInstance == null)
{
myInstance = new Connection1();
}
return myInstance;
}
//该类具体方法
public void say()
{
System.out.println("\nHello ~~1");
System.out.println(this);
}
}
可以看到两种单例模式的引用地址是相同的