單例(Singleton)模式是Java中最簡單的設(shè)計(jì)模式之一。這種類型的設(shè)計(jì)模式屬于創(chuàng)建模式,因?yàn)榇四J教峁┝藙?chuàng)建對(duì)象的最佳方法之一。
這種模式涉及一個(gè)類,它負(fù)責(zé)創(chuàng)建一個(gè)對(duì)象,同時(shí)確保只創(chuàng)建一個(gè)對(duì)象。這個(gè)類提供了一種方法來訪問它的唯一對(duì)象,可以直接訪問,而不需要實(shí)例化類的對(duì)象。
我們將創(chuàng)建一個(gè)單一對(duì)象類 - SingleObject
。單個(gè)對(duì)象(SingleObject
)類的構(gòu)造函數(shù)是私有的,并且具有自身的靜態(tài)實(shí)例。
SingleObject
類提供了一個(gè)靜態(tài)方法來獲取其靜態(tài)實(shí)例到外部世界。SingletonPatternDemo
或示例類將使用SingleObject
類來獲取SingleObject
對(duì)象。
創(chuàng)建一個(gè)Singleton類,
SingleObject.java
public class SingleObject {
//create an object of SingleObject
private static SingleObject instance = new SingleObject();
//make the constructor private so that this class cannot be
//instantiated
private SingleObject(){}
//Get the only object available
public static SingleObject getInstance(){
return instance;
}
public void showMessage(){
System.out.println("Hello World!");
}
}
從單例類中獲取唯一的對(duì)象。
SingletonPatternDemo.java
public class SingletonPatternDemo {
public static void main(String[] args) {
//illegal construct
//Compile Time Error: The constructor SingleObject() is not visible
//SingleObject object = new SingleObject();
//Get the only object available
SingleObject object = SingleObject.getInstance();
//show the message
object.showMessage();
}
}
驗(yàn)證輸出,得到結(jié)果如下 -
Hello World!