宝哥软件园

php实现设计模式中单例模式的详细说明

编辑:宝哥软件园 来源:互联网 时间:2021-09-09

[摘要]

确保一个类只有一个实例,并提供一个全局访问点来访问它[GOF95]

[功能]

1.一个类只有一个实例。2.它必须自己创建这个实例。3.它必须自己向整个系统提供这个实例

[结构图]

[主要角色]

Singleton定义了一个允许客户访问其唯一实例的实例操作。实例是一个类方法。负责创建它的唯一实例。

[优点和缺点]

1.对唯一实例的受控访问2。减少命名空间单一模式是对全局变量的改进。它避免了那些存储唯一实例的全局变量污染命名空间3。它允许操作和表示的精英单例类拥有子类。此外,用这个扩展类的实例配置应用程序是很容易的。您可以在运行时使用所需的类实例来配置应用程序。4.允许可变数量的实例(多实例模式)。5.比班级作业更灵活

[适用性]

1.当一个类只能有一个实例,客户可以从一个著名的访问点访问它时;2.当这个唯一的实例应该通过子类化扩展时。用户应该能够在不更改代码的情况下使用扩展实例。

[单例模式php示例]

复制代码代码如下:Php/*** singleton pattern * * @作者zhaoxuejie[email protected]* @ package design pattern * @ version v 1.0 2011-12-14 */class singleton {//private static成员变量,保存全局实例private static $ instance=//private construction方法,保证了private function _ _ construct(){ }//static方法不能被外界直接实例化,并返回这个类的唯一实例,public static function getinstance(){ if(!isset(self : $ instance)){ $ c=_ _ CLaSS _ _;self : $ instance=new $ c;}返回self: $实例;}//测试方法公共函数info(){返回' ok ';}//防止公共函数_ _ clone () {trigger _ error('不允许克隆。',e _ user _ error);}}

$ s=single :3360 getinstance();echo $ s-info();

更多资讯
游戏推荐
更多+