• 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. 需要定义大量的静态常量和静态方法(如工具类)的环境,可以采用单例模式。

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

  • 相关阅读:
    SQL 中文排序方式
    ASP.NET公有六种验证控件
    CustomValidator的使用方法
    c# 获取网页源码
    asp.net mvc 从客户端中检测到有潜在危险的 Request.Form 值的解决方法
    C#上传文件转字节流形式
    byte数组转换成文件保存到本地
    检测到有潜在危险的Request.Form值
    字节数组生成图片
    Edit Distance (编辑距离) .NET 实现
  • 原文地址:https://www.cnblogs.com/zfc2201/p/3423412.html
Copyright © 2020-2023  润新知