單例模式再思考
阿新 • • 發佈:2018-12-10
【前言】 |
最近在看這個軟考視訊,然後在面向物件技術這一視訊中又一次提到了設計模式,故有了此次的思考。
【單例模式概念】 |
既然講的是單例模式,那麼就先來說一下單例模式的概念: 單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。通過單例模式可以保證系統中,應用該模式的類一個類只有一個例項。即一個類只有一個物件例項 單例模式會阻止其他物件例項化其自己的單例物件的副本,從而確保所有物件都訪問唯一例項。
【單例模式結構圖】 |
【單例模式程式碼實現】 |
本次只總結常用的“懶漢式”
public class Singleton{
private static Singleton instance=null;
public static Singleton getInstance(){
if(instance==null)
{
instance=new Singleton();
}
return instance;
}
private Singleton(){
}
}
【單例模式過程】 |
首先,將該類的建構函式私有化。
其次,在本類中自定義一個物件(因為禁止其他程式建立該類的物件,所以就要自己建立一個供程式使用,否則類就沒有辦法使用,也就不是單例)
最後,提供一個可訪問類自定義物件的類成員方法(對外提供該物件的訪問方式),也就是不能在該類的其他地方建立物件,而是通過該類自身提供的方法訪問類的那個自定義物件。
注意:程式呼叫類中方法的方式只有兩種:
1、建立類的一個物件,用該物件去呼叫類中方法
2、使用類名直接呼叫類中的方法,格式為“類名.方法名()”
又因為上邊的時候提到,建構函式私有化之後第一種方法就不能使用,所以只能去使用第二種方法。又因為使用類名直接呼叫類中方法,類中的方法必須是靜態的,而靜態方法不能訪問非靜態成員變數,因此類自定義的例項變數也必須是靜態的。
【總結】 |
不斷回顧舊知,積累…,如有什麼補充,還請大家提出。