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

    什么是设计模式?
    是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
     
    使用设计模式的目的是什么呢?
    使用设计模式是为了可重用代码、让我们的代码更容易被他人理解、保证代码的可靠性更高。

    设计模式又哪些呢?最基本有23种。

    单例模式
    有些对象我们只需要一个,比如:配置文件、工具类、线程池、缓存、日志对象等
    如果创造出多个实例,就会导致许多问题,比如占用过多的资源,不一致的结果等。
    通过单例模式能够保证整个应用中某个实例有且只有一个。
    常用的单例模式有两种:饿汉模式和懒汉模式。
    饿汉单例模式:

     1 public class Singleton {
     2     private static final Singleton singleton = new Singleton();
     3     private Singleton() {
     4     }
     5     /*
     6     * 通过static可以将这个方法变成类方法
     7     * 使她变为类所有
     8     */
     9     public static Singleton getSingleton()
    10     {
    11         return singleton;
    12     }
    13     /*
    14      * 我有点不理解了,为啥要static和final,看样子基础还不够
    15      */
    16 }

    为什么叫饿汉模式:因为这个单例对象还没使用就创建好了。
    下面介绍下单例模式中的懒汉模式:

     1 public class Singleton {
     2     //这个地方我们只是声明一个引用
     3     private static  Singleton singleton;
     4     private Singleton() {
     5     }
     6     /*
     7      * 懒汉模式就是在获取实例的方法中添加判断语句
     8      */
     9     public static Singleton getSingleton()
    10     {
    11         if (singleton == null) {
    12             singleton = new Singleton();
    13         }
    14         return singleton;
    15     }
    16 }


    下面讲讲饿汉模式和懒汉模式的区别:

     

    区别:

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

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

     

    便于记忆我说两句:

    饿汉模式也就是还没用就有对象实例了,这样时线程安全的,都准备好了,当然安全了。

    反过来懒汉模式在需要的开始才创建对象实例,也就是刚开始还没准备好,万一直接进入线程不就不安全了嘛~

     
    学习笔记 来自 《幕课网》
  • 相关阅读:
    Spring Controller 获取请求参数的几种方法
    JSP ajax跨域问题 怎么处理 原因:CORS 头缺少 'Access-Control-Allow-Origin')。 ajax http 415
    仿微信滑动返回
    App重新启动
    NetWorkUtils
    ProgressWheel
    没有系统头部的dialog
    仿微信添加触摸图片阴影效果
    循环滚动TextView
    java 分割字符串后放入List中
  • 原文地址:https://www.cnblogs.com/goodboy-heyang/p/4749592.html
Copyright © 2011-2022 走看看