設計模式是創建結構良好且易於維護的軟體的基礎。其中Singleton和Observable常用於需要全域狀態控制以及系統不同部分之間通訊的場景。在本文中,我們將探討這兩個標準如何運作、何時使用它們、它們的差異,並提供如何實施它們的實際範例。
單例模式是一種建立型設計模式,可確保一個類別只有一個實例並提供對該實例的全域存取點。當您需要跨整個應用程式使用單一物件(例如全域設定、資料庫連線或日誌管理)時,此模式非常有用。
Singleton的主要特點是它將類別實例限制為單一對象,確保所有實例請求都傳回相同的物件。為了實現這一點,該模式通常使用靜態方法,僅在第一次請求時建立實例,保證整個系統中物件的唯一建立和使用。
在下圖中,序列顯示如何建立和存取 Singleton 實例,以確保它是唯一的。
Singleton 序列圖說明了客戶端和 Singleton 類別之間的互動流程。程序從客戶端呼叫靜態 getInstance() 方法開始取得 Singleton 實例。如果尚未建立實例,Singleton 會建立一個新實例並傳回它。當客戶端再次呼叫 getInstance() 方法時,會傳回同一個實例,確保整個程式執行過程中只有一個 Singleton 物件實例。
class Singleton { private static instance: Singleton; private constructor() { } // Método para acessar a instância única public static getInstance(): Singleton { if (!Singleton.instance) { Singleton.instance = new Singleton(); } return Singleton.instance; } public showMessage(): string { return "Esta é a única instância!"; } } // Uso do Singleton const instance1 = Singleton.getInstance(); console.log(instance1.showMessage()); // "Esta é a única instância!" const instance2 = Singleton.getInstance(); console.log(instance1 === instance2); // true
可觀察模式是一種行為設計模式,定義物件之間的一對多依賴關係。換句話說,當一個物件(「主體」)的狀態改變時,它的所有依賴者(「觀察者」)都會自動被通知。此模式廣泛用於需要在不同元件之間傳播事件和狀態變更的系統,例如圖形介面或監控系統。
可觀察模式允許物件「觀察」物件狀態的變化並對這些變化做出反應。此模式基於三個主要組件:
Observable 序列圖示範了該模式如何與多個觀察者一起工作。當狀態改變時,主體(或被觀察對象)通知所有註冊的觀察者。每個觀察者都會對通知做出反應,並根據收到的資訊採取必要的操作。通知過程被傳播,以便所有觀察者同時更新,使它們與主題的狀態保持同步。當系統中有多個元件或部分需要了解物件狀態的變化時,此模式非常有用。
class Singleton { private static instance: Singleton; private constructor() { } // Método para acessar a instância única public static getInstance(): Singleton { if (!Singleton.instance) { Singleton.instance = new Singleton(); } return Singleton.instance; } public showMessage(): string { return "Esta é a única instância!"; } } // Uso do Singleton const instance1 = Singleton.getInstance(); console.log(instance1.showMessage()); // "Esta é a única instância!" const instance2 = Singleton.getInstance(); console.log(instance1 === instance2); // true
雖然這兩種模式都以受控方式管理對象,但它們的目的和行為卻非常不同:
Característica | Singleton | Observable |
---|---|---|
Objetivo | Garantir que uma classe tenha apenas uma instância. | Notificar múltiplos objetos sobre mudanças de estado. |
Instância | Apenas uma instância é criada e compartilhada. | Vários objetos podem ser observadores de um único sujeito. |
Uso principal | Gerenciamento de recursos exclusivos. | Notificação de eventos e mudanças de estado. |
Exemplo de uso | Gerenciamento de logs ou configuração global. | Atualização de interfaces gráficas ou propagação de eventos. |
目標
Singleton 和 Observable
模式在軟體開發的多種情況下都是基礎模式。當我們需要保證整個應用程式中的類別的單一實例時,以上是單例還是可觀察?錯誤的選擇可能會讓您失去晉升機會!的詳細內容。更多資訊請關注PHP中文網其他相關文章!