哪位大哥用通俗的语言给我介绍一下什么是单例模式?最好可以有代码跟随(网上的语言太专业,表示理解不懂)
实现资源、对象、参数的共享,通常就是两种实现方式,一种是静态化,第二就是单例模型。
相比于静态化,单例模型更加优雅一下,它可以更加方便的随时释放对象,更换对象,也能很好的与其他非静态对象桥接。在很多其他场合,单例模型都有不错的体现,比如iOS、Android中最基础的Application类就是单例化的
单例模式就是某个类只能产生一个实例。这个类的构造函数用private修饰,这样其他类就不能构造这个类的实例,只能由这个类自己实例化一个提供给别的类。
应用场景,比如某个类是控制某个生产线的运作流程,那么这个类最好用单例模式。因为控制类只能有一个,多了的话,那么多个类一起控制运作,岂不乱了套。
提供一种更好的写法
private static $_instance;
public static function getInstance()
{
if (! self::$_instance instanceof self) {
self::$_instance = new self();
}
return self::$_instance;
}
2 回答3.1k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
2 回答1.2k 阅读
1 回答1.2k 阅读
1 回答1k 阅读
1、new ChuiZi() 就是生成一次实例,生成一次实例就是造一个锤子。
2、如果你每次用到锤子,你就造一个锤子,那多费铁啊,用地方储存啊。计算机里就是要用内存啊,要用资源啊。
3、于是就有人想,怎么只用一个锤子,而不是每次都New一个锤子。
于是就有了单例模式 :
4、虽然我们可以要求同伴都
ChuiZi::getInstance()
这么写这么调用。但是难免有人会new 一个,或者克隆一个。那不就不是单个实例了!!!于是:所以发现这设计模式,不是为了装逼而是为了解决问题。
以上就是单例模式。
不要问我一个锤子够用吗!!!
要是问我是不是所有情况都适合用单例,我倒是想好了一个案例:
new GirlFriend();