关于java中无法实现真正单例的论证

如果要用java写一个单例出来,估计对遇到博文广识者来说,写法跟茴香豆的写法数量不相上下。

但很遗憾,因为java中有另外一把近乎无坚不摧的矛,摧毁了java中存在单例的可能性,这把矛就是众所周知的反射。

因为反射的存在,代码编写者可以将创建单例所需要的前提条件根据实际情况做篡改,使得在创建了某个类所谓的单例之后修改前提条件重新创造该类的另一个对象出来,进而破坏了对象的唯一性。

时间: 2024-10-19 01:33:16

关于java中无法实现真正单例的论证的相关文章

java中的四种单例实现方式

在java中,单例设计模式是非常常见的设计模式,对单例设计模式的概念,不做过多的介绍,下面将逐一介绍四种单例设计模式: 1.第一种单例设计模式 1.1 代码实现 package com.singleton.one; /**  * 第一种单例设计模式  * @author Administrator  *  */ public class SingleTonOne { // 实例化 private static SingleTonOne instance = new SingleTonOne();

java中读取properties配置文件用例

在近期需要部署一个项目,所以用到了配置文件. 对于读取配置文件的过程,考虑到效率问题,决定在程序启动时将配置文件内的键值读写入变量. 这样一来,之后程序每次对键值的访问就不用在读配置文件了,而是直接取变量值. 如下是简化之后的用例,展示了一种对properties文件的读取使用方法: 1.创建配置文件data.properties,文件内容如下: user=BUPT pwd=100876 2.创建存储配置文件键值用到的文件Conf.java 1 public class Conf { 2 3 p

java中的单例模式与静态类

单例模式与静态类(一个类,所有方法为静态方法)是另一个非常有趣的问题,在<Java中有关单例模式的面试问题>博文中露掉了,由于单例模式和静态类都具有良好的访问性,它们之间有许多相似之处,例如,两者可以直接使用而无须创建对象,都可提交唯一实例,在一个非常高的高度上看起来它们都为是用于同样的任务.由于它们具有较多的相似性,面试官常常会问一些类似为神马使用单例模式替换静态方法?你能使用静态类替换单例模式吗?Java中单例模式与静态的区别有那些?等这样的问题,为回答这些问题,记住他们单例模式和静态方法

牛刀小试 - 详解Java中的接口与内部类的使用

一.接口 接口的理解 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现: 也就是说,接口自身自提供方法的基本声明,而不提供方法体:接口中声明的方法只能被实现该接口的子类所具体实现. 接口是Java中另一种非常重要的结构.因为Java不支持多继承,某种程度来说这也造成了一定的局限性. 所以接口允许多实现的特点弥补了类不能多继承的缺点.通常通过继承和接口的双重设计,可以既保持类的数据安全也变相实现了多继承. 接口的特点 使用关键字"interface&quo

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

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

真与假与c#,java中的不同之处

/************真与假************/ /*C语言中:真(非0).假(0) * Java.C#中:真(true).假(false) * JavaScript中:真(非0.true.非null).假(0.false.null) */ var x,y,z; x=2; if(x){  document.write("非0为真!");  document.write("<br>");  } y=true; if(y){  document.w

笔记:Java中的单例设计模式

之前接触过单例模式,当初不明白这样的设计用意,今天特地研究了下java中的单例设计模式的用处及用法. 单例模式:单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.一个类有且仅有一个实例,并且自行实例化向整个系统提供. 单例模式的用处:一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务:一个系统只能有一个窗口管理器或文件系统:一个系统只能有一个计时工具或ID(序号)生成器.如在Windows中就只能打开一个任务管理器.如果不使用机制对窗口对象进行唯一化,将

Java中Class和单例类的作用与类成员的理解

Java中Class类的作用与深入理解 在程序运行期间,Java运行时系统始终为所有的对象维护一个被称为运行时的类型标识.这个信息跟踪着每个对象所属的类.JVM利用运行时信息选择相应的方法执行.而保存这些信息的类称为Class.可能容易产生混淆,容易想到class.不过二者没什么关系,class不过是描述类的一个关键字.而Class却是保存着运行时信息的类. 它能做什么?Class类可以帮助我们在程序运行时分析类,说白了就是获取类中的值.可能瞬间就想到了反射,没错!Class一般就是和反射配套使

Java中的单例设计模式举例

本例中通过将构造函数私有化的方式将实例化对象的代码放到类内部的静态函数中,从而实现单例设计模式. class Singleton { static Singleton instance = new Singleton(); private Singleton() { } public static Singleton getInstance() { return Singleton.instance; } public void func() { System.out.println("Hi t