zoukankan      html  css  js  c++  java
  • 面向对象-单线程场景单例设计模式实战案例

                  面向对象-单线程场景单例设计模式实战案例

                                 作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

     

     

     

    一.单例设计模式介绍

    1>.设计模式概述

      就是解决某类问题最行之有效的解决方案,设计模式是一种思想。
    
      Java里面也有设计模式,目前有23种设计模式,单例设计模式就是其中一种。

    2>.单例设计模式

      单例设计模式解决的问题:
        保证一个类在内存种只有一个对象,换句话说,就是保证一个类在内存种的对象唯一性。

    3>.单例设计模式应用场景

      比如配置文件,A程序要使用配置文件对象,B程序也要使用配置文件对象,希望A程序对配置文件数据修改后,B程序可以直接使用,那么就需要A程序和B程序使用同一个对象。

    4>.如何保证一个类在内存种的对象唯一性呢?

      (1)在本类种自定义一个本类对象
      (
    2)对外提供获取该对象的方式即可

    5>.代码具体实现

      (1)私有化构造函数;
    
      (
    2)创建一个私有并且静态的本类的对象;
      (
    3)创建一个公共的static方法返回该对象;

    二.通过饿汉式(类加载的时候就创建对象)实现单例设计模式[工作常用]

    /**
     *     饿汉式单例模式
     * @author 尹正杰
     *
     */
    public class Single {
        //(1)私有化构造函数;
        private Single() {}
        
        //(2)创建一个私有并且静态的本类的对象;
        private static Single s = new Single();
        
        //(3)创建一个公共的static方法返回该对象;
        public static Single getInstance() {
            return s;
        }
    }

    三.通过懒汉式(真正使用的时候才会创建对象)实现单例实际模式[面试常问]

    /**
     *     懒汉式单例模式
     * @author 尹正杰
     *
     */
    public class Single {
        //(1)私有化构造函数;
        private Single() {}
        
        //(2)创建一个私有并且静态的本类的对象;
        private static Single s = null;
        
        //(3)创建一个公共的static方法返回该对象;
        public static Single getInstance() {
            if (s == null) {
                s = new Single();
            }
            return s;
        }
    }

  • 相关阅读:
    sqoop导入数据到mysql原理_sqoop的详细使用及原理
    Attempt to do update or delete using transaction manager that does not support these operations
    impala安装
    stm32单片机时钟中断的配置
    jtag引脚
    关于芯片封装类型
    Altium Designer绘制mark点
    Altium Designer如何移动选中的所有对象
    Altium Designer敷铜的规则设定
    关于Altium Designer重新修改某一原件pcb封装的问题
  • 原文地址:https://www.cnblogs.com/yinzhengjie2020/p/12232780.html
Copyright © 2011-2022 走看看