设计模式是创建结构良好且易于维护的软件的基础。其中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中文网其他相关文章!