zoukankan      html  css  js  c++  java
  • 设计模式之单例模式

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

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

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

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

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

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

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

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

    如果您觉得阅读本文对您有帮助,欢迎转载本文,但是转载文章之后必须在文章页面明显位置保留此段声明,否则保留追究法律责任的权利。

    作  者:blog.jpdou.top

    原文链接:http://blog.jpdou.top/singleton-design-pattern/

  • 相关阅读:
    Java基础技术多线程与并发面试【笔记】
    Java GC【笔记】
    Java JVM【笔记】
    Java基础技术JVM面试【笔记】
    Java HashSet和TreeSet【笔记】
    Java TreeMap 和 LinkedHashMap【笔记】
    Java HashMap【笔记】
    Java LinkedList【笔记】
    Java ArrayList【笔记】
    java基础技术集合面试【笔记】
  • 原文地址:https://www.cnblogs.com/jpdoutop/p/Singleton-Design-Pattern.html
Copyright © 2011-2022 走看看