PHP模式-单例模式

来源:互联网 发布:js 公约数 公倍数 编辑:程序博客网 时间:2024/04/28 14:37

【单例模式中主要角色】
Singleton 定义一个Instance操作,允许客户访问它的唯一实例。Instance是一个类方法。负责创建它的唯一的实例。
【单例模式的优点】
1、对唯一实例的受控访问
2、缩小命名空间 单例模式是对全局变量的一种改进。它避免了那些存储唯一实例的全局变量污染命名空间
3、允许对操作和表示的精华 单例类可以有子类。而且用这个扩展类的实例来配置一个应用是很容易的。你可以用你所需要的类的实例在运行时刻配置应用。
4、允许可变数目的实例(多例模式)
5、比类操作更灵活
【单例模式适用场景】
1、当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时
2、当这个唯一实例应该是通过子类化可扩展的。并且用户应该无需更改代码就能使用一个扩展的实例时。

代码

 

  1. /*
  2. *单例模式
  3. */
  4. class singleton{
  5. /*
  6. * 静态成品变量 保存全局实例
  7. */
  8. private static $_instance = NULL;
  9. /*
  10. * 私有化构造方法 保证外界无法直接实例化
  11. */
  12. private function __construct(){
  13. }
  14. /*
  15. * 静态工厂方法 返回此类的唯一实例
  16. */
  17. static function getInstance($class){
  18. if(is_null(self::$_instance)){
  19. self::$_instance = new $class();
  20. }
  21. return self::$_instance;
  22. }
  23. /*
  24. * 防止用户克隆实例
  25. */
  26. public function __clone(){
  27. //取消PHP默认的克隆操作
  28. }
  29. }
  30. class People{
  31. function sayHi(){
  32. return 'Hello!';
  33. }
  34. }
  35. echo singleton::getInstance('People')->sayHi();
  36. ?>

原创粉丝点击