zoukankan      html  css  js  c++  java
  • 不要滥用单例模式

      单例模式是23种设计模式中最常用的模式之一。单模式屏蔽了对象的初始化,可以很方便地获取对象而不用每次都去初始化它。由于易用且好用,在很多情况下都会来一个单例模式的类。本文要强调的是,虽然好用,单例模式绝不能滥用。在使用的时候,还需要仔细地斟酌。

      1. 单例模式是缓存的表现形式之一。

      单一对象一旦初始化后,将会在程序运行过程中长驻内存。既然属于缓存,那么就需要考虑,哪些对象是需要缓存,而哪些对象不需要。毕竟系统的资源是有限的,不可能对所有的内容都进行缓存。如果对象不是使用得太频繁,就需要考虑,缓存这样的对象值不值得。

      2. 如果使用了单例模式,就意味着,其它模块对这个模块的引用总是1,而无法达到1对多或多对多的引用,也就是说,对象的使用受到了限制。而调用者只能反复使用这一个对象,你能保证对象随时都处于一可预定的状态吗?如果不能,那就不要使用单例模式。如果对象是无状态的,就比较合适提供为单例模式。从系统的扩展方面来考虑,如果需要反复使用一个对象,应该提供另外一个Provider类或Cache类,在这个类中,缓存某个对象,并为外界提供访问这个对象的接口。

      3. 单例模式限制了对对象的扩展。一个被设计成单例模式的类如果扩展?恐怕比较别扭。我的经验是,一个应用程序或框架中,除了以下几种角色的类外,应该避免使用单例类。

    •  提供数据的辅助类
    •  使用频繁并且是无状态,不需要同步的类
    •  创建对象的类,如Provider、Cache、Builder、Factory这些类
    •  配置操作类




  • 相关阅读:
    vlc-ts
    es 模板
    zookeeper 启动脚本
    received shard failed for shard id
    gitlab runner 配置
    kafka 配置文件注释
    logstash 统计告警
    BigBao 的python开发到DevOps 之路
    logstash 自动重新加载配置
    rsyslog 传输日志
  • 原文地址:https://www.cnblogs.com/qkhh/p/1779283.html
Copyright © 2011-2022 走看看