溫振宏 哈爾濱廣廈學院
面向對象編程語言中單例模式的實現
溫振宏 哈爾濱廣廈學院
單例(SingleTon)模式是面向對象編程語言中的一種軟件設計模式。它為應用程序提供了對象的唯一的訪問點,不管它實現何種功能,整個應用程序都會同享一個實例對象。本文以PHP語言及JAVA語言為實例具體講解了單例式的實現。
單例模式 面向對象 PHP JAVA
面向對象編程語言(Object-Oriented Language)借鑒了20世紀50年代的人工智能語言LISP,引入了動態綁定的概念和交互式開發環境的思想。始于20世紀60年代的離散事件模擬語言SIMULA67,引入了類和繼承,成形于20世紀70年代的Smalltalk。面向對象編程語言是以對象作為基本程序結構單位的程序設計語言,指用于描述的設計是以對象為核心,而對象是程序運行時刻的基本成分。
面向對象編程語言的發展分為兩個方向:一種是純面向對象編程語言,如Smalltalk,Java等。另一種是混合型面向對象編程語言,即在過程性語言中加入類,繼承等成分,如C++,PHP等。下面就以PHP和JAVA為例講解單例模式的實現。
PHP是一種混合型編程語言,是HTML內嵌式的,用來制作動態網頁的服務器端的腳本語言。其特點是:開發周期短,穩定安全,簡單易學,免費開源,良好的跨平臺特性。
JAVA是一種純面向對象編程語言,具有簡單、分布式、健壯性、安全性、可移植性、多線程、動態性等特點。
單例模式,是一種常用的軟件設計模式。它的核心結構中只包含一個被稱為單例類的特殊類。通過單例模式可以保證系統中一個類只有一個實例,而且該實例易于外界訪問,從而方便對實例個數的控制并節約系統資源。
單例模式主要作用是保證在面向對象編程中,一個類Class只有一個實例存在。在很多操作中,比如建立目錄,數據庫連接等都需要這樣的單線程操作;一些資源管理器亦常常設計成單例模式;每臺計算機可以有若干個打印機,但只能有一個Printer Spooler,以避免兩個打印作業同時輸出到打印機中;每臺計算機可以有若干個通信端口,系統應當集中管理這些通信端口,以避免一個通信端口被兩個請求同時調用,這就是單子模式。再比如,Windows回收站,在整個視窗系統中,回收站只能有一個實例,整個系統都使用這個唯一的實例,回收站是單例模式的應用。當然,Windows系統的幫助文檔也是通過單例模式實現的。
單例模式的實現需要有三個要點:一是某個類只能有一個實例;二是它必須自行創建這個實例;三是它必須自行向整個系統提供這個實例。

由兩個實例結果,可以得知單例模式為一個面向對象的應用程序提供了對象惟一的訪問點,不管它實現何種功能,整個應用程序都會同享一個實例對象。
從具體實現角度來說,面向對象編程語言(PHP或JAVA)實現單子模式需注意以下三點:一是單例模式的類只能是有私有的構造函數或方法,二是類的定義中含有一個該類的靜態私有屬性,三是該類提供了一個靜態的共有的函數或方法用于創建或獲取它本身的靜態私有對象。
TP393
A