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

          学习设计模式也有一段时间了,看了些书籍也一直在园子里关注设计模式的文章,无奈动手比较少,仅仅几个设计模式拿来应用过,其它的基本上仅限于了解概念而已。悲哉!悲哉!前阵子在项目里居然发现可以应用单例模式,呵呵,颇有些惊喜。故写下面的。以此巩固和梳理自己的知识,加深理解。

      什么叫单例模式? 单例模式又叫做单态模式或者单件模式
         概念1(GOF):单例模式(Single)是指保证一个类仅有一个实例,并提供一个访问它的全局访问点 
         概念2:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类

         单例模式又分为:

      一 懒汉式单例:在类被加载的时候,唯一实例已经被创建     

         二、饿汉式单例 在类加载的时候不创建单例实例。只有在第一次请求实例的时候的时候创建,并且只在第一次创建后,以后不再创建该类的实例。

      三、登记式单例  这个单例实际上维护的是一组单例类的实例,将这些实例存放在一个Map(登记薄)中,对于已经登记过的实例,则从工厂直接返回,对于没有登记的,则先登记,而后返回。

      单例类的特点:

         1、单例类只能有一个实例
       2、单例类必须自己给自己创建自己的唯一的实例
         3、单例类必须给其他所有对象提供这一实例

    一个类的对象的产生是由类构造函数来完成的,如果想限制对象的产生,就要将构造函数变为私有的(至少是受保护的),使得外面的类不能通过引用来产生对象;同时为了保证类的可用性,就必须提供一个自己的对象以及访问这个对象的静态方法。通常我们可以让一个全局变量使得一个对象被访问。但它不能防止你实例化多个对象,一个最好的方法就是,让类自身保存它的唯一实例,这个类可以保证没有其它实例可以被创建,并且它可以提供一个访问改实例的方法
      

    什么时候用单例模式?当某个类的初始化比较耗时,耗资源的时候,比如加载某些配置文件等,一般会选择单例模式。
    单例模式一般用在你不想实例化多个对象的地方 ,比如WinForm里MDI窗口内的子窗体。



     

    扫描上面二维码关注我
    如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
  • 相关阅读:
    Note/Solution 转置原理 & 多点求值
    Note/Solution 「洛谷 P5158」「模板」多项式快速插值
    Solution 「CTS 2019」「洛谷 P5404」氪金手游
    Solution 「CEOI 2017」「洛谷 P4654」Mousetrap
    Solution Set Border Theory
    Solution Set Stirling 数相关杂题
    Solution 「CEOI 2006」「洛谷 P5974」ANTENNA
    Solution 「ZJOI 2013」「洛谷 P3337」防守战线
    Solution 「CF 923E」Perpetual Subtraction
    KVM虚拟化
  • 原文地址:https://www.cnblogs.com/kerrycode/p/1587161.html
Copyright © 2011-2022 走看看