单例模式用得比较多,可能大家都会比较熟悉。
单例模式:一个对象只产生一个实例,并提供一个全局的入口方法。
Ensure a class has only one instance, and provide a global point of access to it. [GoF, p127]
单例又分为 饿汉和懒汉方式,我觉得他们效果和性能差不多,所以不想多说,只实现比较简单的懒汉方式,容易理解。
对象先自己创建,再提供一个入口方法提供调用
UML整理
Client
在创建一个给自己提供实例的类
再说懒汉和饿汉,从效率分析,饿汉效率比较高,实现上看懒汉好。如果有兴趣可以google或baidu一下吧。
单例模式:一个对象只产生一个实例,并提供一个全局的入口方法。
Ensure a class has only one instance, and provide a global point of access to it. [GoF, p127]
单例又分为 饿汉和懒汉方式,我觉得他们效果和性能差不多,所以不想多说,只实现比较简单的懒汉方式,容易理解。
对象先自己创建,再提供一个入口方法提供调用
UML整理
Client
package org.benewu.patterns.singleton;
public class Client {
public static void main(String[] args) {
Singleton singletonA = Singleton.getInstance();
Singleton singletonB = Singleton.getInstance();
System.out.println(singletonA);
System.out.println(singletonB);
}
}
public class Client {
public static void main(String[] args) {
Singleton singletonA = Singleton.getInstance();
Singleton singletonB = Singleton.getInstance();
System.out.println(singletonA);
System.out.println(singletonB);
}
}
在创建一个给自己提供实例的类
package org.benewu.patterns.singleton;
public class Singleton {
private static Singleton singleton = new Singleton ();
private Singleton (){
}
public static Singleton getInstance(){
return singleton;
}
}
public class Singleton {
private static Singleton singleton = new Singleton ();
private Singleton (){
}
public static Singleton getInstance(){
return singleton;
}
}
再说懒汉和饿汉,从效率分析,饿汉效率比较高,实现上看懒汉好。如果有兴趣可以google或baidu一下吧。