Java静态变量的用法:伪单例

这几天遇到一个问题,一个Service里有一个map,但是这个Service有别的继承,于是每一个Service都会创建一个map,但是这个map应该是公用的,于是就有问题了。。。(按结构说Service里是不应该有map存在的,结果设计有问题,但是结构不影响研究)

特殊的解决方式:把此map改为static即可,因为一个类的静态变量在不同实例中是共用的,所以这样便实现了map的单例模式。

(标准解决方案是放在一个单例的manager中,以便公共调用,这里偷懒。。。)

时间: 2024-10-16 08:34:40

Java静态变量的用法:伪单例的相关文章

JAVA之旅(六)——单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖

JAVA之旅(六)--单例设计模式,继承extends,聚集关系,子父类变量关系,super,覆盖 java也越来越深入了,大家加油吧!咱们一步步来 一.单例设计模式 什么是设计模式? JAVA当中有23种设计模式,解决某一问题最有效的方法 单例设计模式 解决一个类在内存中只存在一个对象 想要保证对象唯一该怎么做> 1.为了避免其他程序过多建立该类对象,先禁止其他程序建立该类对象 2.还为了让其他程序访问到该类对象,只好在本类中自定义一个对象 3.为了方便其他程序对自定义对象的访问,可以对外提供

java 静态变量初始化顺序

public class Elvis { public static final Elvis INSTANCE = new Elvis(); private final int beltSize; private static final int CURRENT_YEAR = Calendar.getInstance().get(Calendar.YEAR); private Elvis() { beltSize = CURRENT_YEAR - 1930; } public int beltS

php和java静态变量用途的思考

静态变量有哪些用途? 比如创建单例对象. 统计访问次数.数量等等. 多线路和进程中可能会使用. 深入理解补充.... PHP 单例模式解析和实战 php设计模式--单例模式 php static 与 java static 变量生命周期的不同 PHP 单例模式解析和实战 http://www.php100.com/cover/php/83.html解释了,为什么静态变量用self::$instance而不能用$this->.

JAVA学习第十课(单例设计模式)

杂谈: 如果一个类里的方法都是静态的,那么就没有必要创建对象,为了不让其他程序创建对象,就可以把当前类的构造函数私有化. class MAN { private MAN() { } } 文档注释:命令:javadoc 只能解析/** 开始至 */结束的内容:/* */则不行 路径设置问题: 当要运行,两个以上路径中的class文件时,路径都要设置,命令:classpath=.;c:\myhelp或者:classpath=.;%myhelp% 清除路径: set classpath= 设计模式:对

java中你确定用对单例了吗?

作为程序猿这种特殊物种来说,都掌握了一种特殊能力就是编程思想,逻辑比较谨慎,但是有时候总会忽略到一些细节,比如我,一直以来总觉得Singleton是设计模式里最简单的,不用太在意,然而就是因为这种不在意在开发中吃亏了.真的too young to simple. 好不扯淡了,直入主题. 在代码的世界里发现有各种写法的单例,有人说单例有5种,6种,7种- 对于单例的分类这点必须规范下,首先这么多种的分类是根据什么来定义的,基准是什么?否则怎么会有那么多写法. 因此归纳下来,从延迟加载和执行效率的角

【Java】设计模型-五种单例模型

一. 什么是单例模式 只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计. 单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在. 单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间: 能够避免由于操作多个实例导致的逻辑错误.如果一个对象有可能贯穿整个应用程序,而且起到了全局统一管理控制的作用,那么单例模式也许是一个值得考虑的选择. 二. 单例模式的特点 1. 单例模式只能有一个实例. 2. 单例类必

(转)Java静态变量,静态类,静态方法

静态变量和静态方法都属于静态对象,它与非静态对象的差别需要做个说明. (1)Java静态对象和非静态对象有什么区别? 比对如下: 静态对象                                                        非静态对象     拥有属性:                是类共同拥有的                                             是类各对象独立拥有的内存分配:               内存空间上是固定的   

java 静态变量生命周期(类生命周期)

Static: 加载:java虚拟机在加载类的过程中为静态变量分配内存. 类变量:static变量在内存中只有一个,存放在方法区,属于类变量,被所有实例所共享 销毁:类被卸载时,静态变量被销毁,并释放内存空间.static变量的生命周期取决于类的生命周期 类初始化顺序: 静态变量.静态代码块初始化 构造函数 自定义构造函数 结论:想要用static存一个变量,使得下次程序运行时还能使用上次的值是不可行的.因为静态变量生命周期虽然长(就是类的生命周期),但是当程序执行完,也就是该类的所有对象都已经

Effective java 第2版 - 笔记(01) 单例(Singleton)的枚举(enum)实现

直接上代码: 1 public enum Boss { 2 3 INSTANCE; 4 5 private String name; 6 7 public void doSomeThing() { 8 System.out.println(name + " is doing something now..."); 9 } 10 11 public String getName() { 12 return name; 13 } 14 15 public void setName(Stri