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

    1.设计模式

    概述:一套被反复使用的、多数人所知晓的、经过分类别、目的、代码设计经验的总结。

    目的:提高代码的重用性,更容易被别人理解,保证代码的可靠性。

    2.单例模式:

    有些对象只需要一个:配置文件、工具类、线程池 、缓存、日志对象等。

    如果出现多个,就会导致许多问题,如占用过多资源、产生不一致的结果。

    a)       饿汉模式

                         i.            将构造方法私有化,不允许外部直接创建对象。

                        ii.            创建类的唯一实例。(private static)

                      iii.            封装、提供一个用户获取实例的方法。(pirvate static)。

     1 /*
     2  * 单例模式Singleton
     3  * 应用场合:有些对象只需要一个就足够了,如古代皇帝、老婆
     4  * 作用:保证整个应用程序中某个实例有且只有一个
     5  * 类型:饿汉模式、懒汉模式
     6  */
     7 public class Singleton {
     8     //1.将构造方法私有化,不允许外部直接创建对象
     9     private Singleton(){        
    10     }
    11     
    12     //2.创建类的唯一实例,使用private static修饰
    13     private static Singleton instance = new Singleton();
    14     
    15     //3.提供一个用于获取实例的方法,使用public static修饰
    16     public static Singleton getInstance(){
    17         return instance;
    18     }
    19 }

    b)       懒汉模式

                         i.            将构造方法私有化,不允许外部直接创建对象。

                        ii.            声明类的唯一实例。(private static)

                      iii.            封装、提供一个用户获取实例的方法。(pirvate static)。

                      iv.            特点:用的时候创建。

     1 /*
     2  * 单例模式Singleton
     3  * 应用场合:有些对象只需要一个就足够了,如古代皇帝、老婆
     4  * 作用:保证整个应用程序中某个实例有且只有一个
     5  * 类型:饿汉模式、懒汉模式
     6  */
     7 public class Singleton {
     8     //1.将构造方法私有化,不允许外部直接创建对象
     9     private Singleton(){        
    10     }
    11     
    12     //2.创建类的唯一实例,使用private static修饰
    13     private static Singleton instance = new Singleton();
    14     
    15     //3.提供一个用于获取实例的方法,使用public static修饰
    16     public static Singleton getInstance(){
    17         return instance;
    18     }
    19 }

    3.对比:

    饿汉模式:加载类时比较慢,但运行时获取对象的速度比较快,线程安全的。

    懒汉模式:加载类时比较快,但运行时获取对象的速度比较快,线程不安全的。

    我自是年少,韶华倾覆
  • 相关阅读:
    图片和xml文件的转换
    WPF的样式(Style)继承
    .NET的序列化和反序列化
    WPF中的画板InkCanvas
    找到网页的源文件并找到歌曲文件的路径
    How to check if a ctrl + enter is pressed on a control?
    计算两个日期相差的天数
    图片保存到数据库以及从数据库中Load图片
    设计模式Command(命令模式)
    一个强大而且好用的UML设计工具
  • 原文地址:https://www.cnblogs.com/liuxinwei/p/5915959.html
Copyright © 2011-2022 走看看