您好,欢迎访问一九零五行业门户网

PHP的单例模式

哪位大哥用通俗的语言给我介绍一下什么是单例模式?最好可以有代码跟随(网上的语言太专业,表示理解不懂)
回复内容: 哪位大哥用通俗的语言给我介绍一下什么是单例模式?最好可以有代码跟随(网上的语言太专业,表示理解不懂)
1、new chuizi() 就是生成一次实例,生成一次实例就是造一个锤子。
2、如果你每次用到锤子,你就造一个锤子,那多费铁啊,用地方储存啊。计算机里就是要用内存啊,要用资源啊。
3、于是就有人想,怎么只用一个锤子,而不是每次都new一个锤子。
于是就有了单例模式 :
class chuizi { static private $_instance = null; public static function getinstance() { if(self::$_instance == null) { self::$_instance = new chuizi(); } return self::$_instance; }}// 这样 chuizi::getinstance(); 大家就都是用同一个实例啦
4、虽然我们可以要求同伴都chuizi::getinstance()这么写这么调用。但是难免有人会new 一个,或者克隆一个。那不就不是单个实例了!!!于是:
class chuizi { static private $_instance = null; public static function getinstance() { if(self::$_instance == null) { self::$_instance = new chuizi(); } return self::$_instance; } private function __construct() {} private function __clone() {}}
所以发现这设计模式,不是为了装逼而是为了解决问题。
以上就是单例模式。
不要问我一个锤子够用吗!!!
要是问我是不是所有情况都适合用单例,我倒是想好了一个案例:
new girlfriend();
实现资源、对象、参数的共享,通常就是两种实现方式,一种是静态化,第二就是单例模型。
相比于静态化,单例模型更加优雅一下,它可以更加方便的随时释放对象,更换对象,也能很好的与其他非静态对象桥接。在很多其他场合,单例模型都有不错的体现,比如ios、android中最基础的application类就是单例化的
说个用得比较多得实际案例吧
一般情况下,db类都是应用了单例模式的.
实例化一次后,多次调用都不会被实例化,避免性能浪费.
单例!
目的就是为了防止产生多个实例化对象
第一次产生后放到类的一个静态变量中,下次再实例化就直接返回这个静态变量
单例模式就是某个类只能产生一个实例。这个类的构造函数用private修饰,这样其他类就不能构造这个类的实例,只能由这个类自己实例化一个提供给别的类。
应用场景,比如某个类是控制某个生产线的运作流程,那么这个类最好用单例模式。因为控制类只能有一个,多了的话,那么多个类一起控制运作,岂不乱了套。
提供一种更好的写法
private static $_instance;public static function getinstance(){ if (! self::$_instance instanceof self) { self::$_instance = new self(); } return self::$_instance;}
其它类似信息

推荐信息