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

    定义:

    Ensure a class has only one instance, and provide a global point of access to it.

    确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

    饿汉式

    package com.anllin.designpattern;
    
    public class Singleton
    {
        private static final Singleton instance = new Singleton();
    
        private Singleton()
        {
        }
    
        public static Singleton getInstance()
        {
            return instance;
        }
    }

     懒汉式

    package com.anllin.designpattern.singleton;
    
    public class Singleton
    {
        private static Singleton instance = null;
    
        private Singleton()
        {
        }
    
        public synchronized static Singleton getInstance()
        {
            if(null == instance)
            {
                instance = new Singleton();
            }
            
            return instance;
        }
    }

    优点:

    1. 减少了内存开支。
    2. 减少了系统的性能开销。
    3. 避免资源的多重占用。
    4. 可以在系统设置全局的访问点,优化和共享资源访问。

    缺点:

    1. 没有接口,扩展困难。
    2. 对测试不利,无法进行TDD。
    3. 与单一职责原则冲突。应根据实际情况判断是否使用。

    使用场景:

    在一个系统中,要求一个类有且仅有一个对象,如果出现多个对象就会出现“不良反应”,可以采用单例模式,具体的场景如下:

    1. 要求生成唯一序列号的环境。
    2. 在整个项目中需要一个共享访问点或共享数据,例如一个web页面上的计数器,可以不用把每次刷新都记录到数据库中,使用单例模式保持计数器的值,并确保是线程安全的。
    3. 创建一个对象需要消耗的资源过多,如访问IO和数据库等资源。
    4. 需要定义大量的静态常量和静态方法(如工具类)的环境,可以采用单例模式。

    以上内容摘自《设计模式之禅》,需要了解细节的话,请自己下载书翻看。

  • 相关阅读:
    数组排序 -- 冒泡排序
    数组自带的函数(方法)
    京东官网轮播图的实现
    鼠标单击元素输出对应元素的索引号
    JavaScript中获取HTML元素的方式
    JavaScript数组的2种定义方式
    this关键字
    JavaScript中对象的3种定义方式
    Hadoop完整搭建过程(三):完全分布模式(虚拟机)
    Hadoop完整搭建过程(二):伪分布模式
  • 原文地址:https://www.cnblogs.com/zfc2201/p/3423412.html
Copyright © 2011-2022 走看看