码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之单例模式

时间:2016-07-06 17:53:36      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

维基百科上关于单例模式的定义:也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。


对于稍微复杂一点的系统来说,要管理的各种数据(比如数据库连接,module的配置信息等等),最好是将这些信息封装起来,所有的module要使用这些信息都只能从这里取,这样做可以降低各个module之间的耦合,有利于程序后期的维护。

下面列举几个单例模式的常见应用场景:
管理数据库连接:假如在每个model中直接创建数据库连接,可能单次访问就会创建数十个连接,这样是对数据库资源的一种浪费,对于数据库连接来说,每一次请求只创建一个数据库连接就足够了。

管理配置文件:配置信息经常使用.xml文件或者直接使用数组来封装,对于组件式系统,配置文件是维系整个系统的核心,如果每个module都是直接读取配置文件,不仅十分麻烦,而且不利于管理,假如配置文件的结构有了更改,就需要到每个module里对每一次配置信息调用做修改,这是十分痛苦的。使用单例模式,就可以很方便地统一管理配置信息,如果配置文件结构有更改,只需要修改单例中调用方法即可,这非常有利于系统的后期维护。

日志输出:在module的开发和调试、运行中,经常需要用到log功能,如果在单例中封装好静态的log方法,就可以很方便的直接调用而避免在代码中到处echo、var_dump、print_r等。单例中的方法因为只需要编写一次就能全局调用,所以完全值得花时间把它写得更好、功能更全面。

对于MVC架构的系统来说,控制器层与视图层的数据交流也可以通过单例模式来完成。控制器中的数据,通过单例再“转交”给视图层。

单例还可以用来暂时“存放”model实例,方便此model实例在后续代码的使用。实例化的model,假如要在其他类中继续使用应该怎么做?直接new一个model对象显然是不行的,答案就是采用单例。

上面简单地罗列了一下我平时在开发中用到单例模式的一些场景,还有很多应用场景没有列出,总之单例模式是一种非常有用的设计模式,作为程序开发人员需要对它充分掌握。

 

本文版权属于作者所有,转载请注明出处: http://www.cnblogs.com/jpdoutop/p/Design-Pattern-Singleton.html

设计模式之单例模式

标签:

原文地址:http://www.cnblogs.com/jpdoutop/p/Design-Pattern-Singleton.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!