1. 程式人生 > >單例模式再思考

單例模式再思考

【前言】

  最近在看這個軟考視訊,然後在面向物件技術這一視訊中又一次提到了設計模式,故有了此次的思考。

【單例模式概念】

  既然講的是單例模式,那麼就先來說一下單例模式的概念:   單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。通過單例模式可以保證系統中,應用該模式的類一個類只有一個例項。即一個類只有一個物件例項   單例模式會阻止其他物件例項化其自己的單例物件的副本,從而確保所有物件都訪問唯一例項。

【單例模式結構圖】

這裡寫圖片描述

【單例模式程式碼實現】

  本次只總結常用的“懶漢式”

public class Singleton{
    private
static Singleton instance=null; public static Singleton getInstance(){ if(instance==null) { instance=new Singleton(); } return instance; } private Singleton(){ } }
【單例模式過程】

  首先,將該類的建構函式私有化。   其次,在本類中自定義一個物件(因為禁止其他程式建立該類的物件,所以就要自己建立一個供程式使用,否則類就沒有辦法使用,也就不是單例)   最後,提供一個可訪問類自定義物件的類成員方法(對外提供該物件的訪問方式),也就是不能在該類的其他地方建立物件,而是通過該類自身提供的方法訪問類的那個自定義物件。   注意:程式呼叫類中方法的方式只有兩種:   1、建立類的一個物件,用該物件去呼叫類中方法   2、使用類名直接呼叫類中的方法,格式為“類名.方法名()”   又因為上邊的時候提到,建構函式私有化之後第一種方法就不能使用,所以只能去使用第二種方法。又因為使用類名直接呼叫類中方法,類中的方法必須是靜態的,而靜態方法不能訪問非靜態成員變數,因此類自定義的例項變數也必須是靜態的。

【總結】

  不斷回顧舊知,積累…,如有什麼補充,還請大家提出。