标签:
维基百科上关于单例模式的定义:也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。
对于稍微复杂一点的系统来说,要管理的各种数据(比如数据库连接,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