博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常用设计模式
阅读量:5149 次
发布时间:2019-06-13

本文共 1310 字,大约阅读时间需要 4 分钟。

1.单例设计模式

确保某一个类只有一个实例,而且自行实例化向整个系统提供这个实例

要素:

  @1.这个类只能有一个实例

  @2.它必须自行创建这个实例

  @3.它必须自行向整个系统提供这个实例

用途:

@1.主要用于数据库应用,一个应用中会存在大量的数据库操作,再使用面向对象的方式开发时,如果使用单例模式,则可避免大量的new操作消耗的资源,还可以减少数据据库链接

这样就不容易出现too many connections情况

@2.如果系统需要有一个类来全局控制某些配置信息,那么使用单例模式可以很方便的实现,可以参照 zend Framework的FrontController部分

/** * 设计模式之单例模式 * $_instance必须声明为静态的私有变量 * 构造函数必须声明为私有,防止外部程序new类从而失去单例模式的意义 * getInstance()方法必须设置为公有的,必须调用此方法以返回实例的一个引用 * ::操作符只能访问静态变量和静态函数 * new对象都会消耗内存 * 使用场景:最常用的地方是数据库连接。 * 使用单例模式生成一个对象后,该对象可以被其它众多对象所使用。 */class man{    //保存例实例在此属性中    private static $_instance;    //构造函数声明为private,防止直接创建对象    private function __construct()    {        echo '我被实例化了!';    }    //单例方法    public static function get_instance()    {        //var_dump(isset(self::$_instance));                if(!isset(self::$_instance))        {            self::$_instance=new self();        }        return self::$_instance;    }    //阻止用户复制对象实例    private function __clone()    {        trigger_error('Clone is not allow' ,E_USER_ERROR);    }    function test()    {        echo("test");    }}// 这个写法会出错,因为构造方法被声明为private//$test = new man;// 下面将得到Example类的单例对象$test = man::get_instance();$test = man::get_instance();$test->test();// 复制对象将导致一个E_USER_ERROR.//$test_clone = clone $test;

  

 

转载于:https://www.cnblogs.com/jiechn/p/4460716.html

你可能感兴趣的文章
『转』Bitdefender Internet Security 2013 – 免费1年
查看>>
pytorch搭建神经网络-第一篇博客
查看>>
Sublime Text 3 快捷键总结(拿走)
查看>>
return,break与continue的区别
查看>>
快排的递归和非递归C++
查看>>
微信公众平台开发(11) 发送客服消息
查看>>
MongoDB之$关键字及$修改器$set $inc $push $pull $pop
查看>>
关于对象
查看>>
CGo中传递多维数组给C函数
查看>>
android 调用系统照相机拍照后保存到系统相册,在系统图库中能看到
查看>>
ActionScript 3.0 宝典(中文PDF下载)
查看>>
Swift入门篇-集合
查看>>
Taffy自动化测试框架Web开发,Python Flask实践详解
查看>>
2019.07.15 年中备忘
查看>>
传统IO与NIO的比较
查看>>
在利用手背扫描图像+K因子 对室内温度进行回归预测时碰到的问题
查看>>
Maven笔记
查看>>
UVa 12661 (单源最短路) Funny Car Racing
查看>>
Hihocoder 1275 扫地机器人 计算几何
查看>>
实例详解TOP命令
查看>>