1. 程式人生 > 其它 >Java面向物件-單例(Singleton)設計模式

Java面向物件-單例(Singleton)設計模式

單例模式參考文件: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); } }