深入理解Java的單例模式

來源:互聯網
上載者:User

下面是一個單例模式的實現
public class Station {
   
    private static Station st=new Station();
    private int num=10;
    private Station(){
       
    }
   
    public static Station getInstance(){
        return st;
    }
   
    public void sell(){
        if (st.num>0) {
            num--;
            System.out.println("有票");
        }else {
            System.out.println("票賣沒了");
        }
    }
}

public class Demo {

 

    public static void main(String[] args) {

        Station st=Station.getInstance();
        for (int i = 20; i >0; i--) {
            System.out.print(i+"\t");
            Station.getInstance().sell();
        }
       
    }
}

  單例模式可以理解為是物件導向語言中對全域變數的一種實現,當然的作用不僅僅限於此。我們可以對單例模式實現的過程中的思路進行一下剖析,如此更加清楚的認識到設計模式究竟是什麼,當然也可以證明一下基礎知識的重要性(基礎才是王道)。

  首先我們分析一下單例的意義,在Java中為一個類只能有一個執行個體化對象。這顯然不是我們平常所寫的一個普通類所能夠做到的事情。那麼為了實現這一個要求該如何去做呢。執行個體化是一個類的初始化時候的問題,而初始化是構造方法去做的事情(當然這裡面jvm也幫我們做了很多的事情)。構造方法,我們要設為私人。這樣我們讓該類不能被隨意的初始化,那該在哪初始化,而它有怎樣被調用呢。

  一個不能初始化的類,也就是說不能夠被執行個體化的類,我們想要調用。那麼無疑讓我們想到了static關鍵字,一個public static 的方法可以實現我們這個要求——即在不執行個體化類的情況下能夠調用其中的方法。於是我們寫下了一個public static 的方法,用於得到這個類的唯一執行個體。而這個執行個體我們是在類的內部執行個體,並同樣定義為 static 的變數(一直用static 只是為了能夠不執行個體化便可以使用。因為static可以在類初始化的時候便產生了,對於此不理解的同學們可以查看我的前一篇部落格。。。)。到這裡我們一個單例模式的實現架構其實已經搭好了。

  本文中的例子,sell()方法的使用是為瞭解決一個具體問題,我在單例架構下擴充而得到的。該例子的背景是有一個售票點,我們要知道自己買票的時候是否能夠買到票。顯然這是一個可以用單例模式解決的問題。因為全域只能有一個記錄票數的變數,因此我們不能夠造出多個執行個體,那樣便失去了原有的意義。於是,我們在此加上了機票數的變數num,並假使只剩下十張票。

  然後,我們設立一個售票的方法,如果有票賣便列印出有票同時票的數量減一,否則列印出票賣沒了。(簡單的判斷語句)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.