Java面向物件-單例(Singleton)設計模式
阿新 • • 發佈:2021-06-30
單例模式參考文件:https://www.runoob.com/design-pattern/singleton-pattern.html
單例模式是static的應用場景,指:一個類只能產生一個例項
單例模式的應用場景:工具類一般都是單例模式
引申:什麼是例項:https://blog.csdn.net/qq_43663024/article/details/103937611
單例設計模式的實現方式:
建立一個類,滿足以下條件:
構造器私有(private);用一個私有(private)、靜態(static) 的變數引用例項;提供一個共有 (public)、靜態(static) 的方法獲得例項
程式碼:
類的定義:
public class TestSingleton { //提供一個私有的、靜態的變數引用例項,(引用變數為 私有、靜態的) private static TestSingleton testSingleton; protected int aa =10; public String name = "zxc"; private String tag = "222"; //構造器私有 private TestSingleton(){ System.out.println("私有構造器"); } //提供一個公有、靜態方法獲得例項public static TestSingleton getTestSingleton(){ if (testSingleton ==null){ testSingleton = new TestSingleton(); } return testSingleton; } }
例項化:
public class InitialSingletonTest { public static void main(String[] args) { // 不能通過這種強引用的方法新建例項,因為構造器方法是private的// TestSingleton testSingleton = new TestSingleton(); TestSingleton t1= TestSingleton.getTestSingleton(); // 一個類只能建立一個例項 TestSingleton t2= TestSingleton.getTestSingleton(); // t1 和 t2 其實是一個例項 System.out.println(t1==t2); // name是public的,可以在任何地方訪問 t1.name="dd"; // aa是protected的,可以在包中訪問 t1.aa= 2; // tag是private的,只能在類中訪問,否則會報錯 // t1.tag="222"; System.out.println(t2.aa); } }