基本知识:一般而言,不变类没有状态。单例类不同,单例类含有状态,而且含有非常重要的状态,一般是需要共享的资源,譬如系统的配置信息等。
在Java中,一个类有100个实例,会导致状态有100个拷贝,但方法在内存中只存储一次。一个不变类无论有多少个实例,它所含有的方法代码只会出现在内存中一次而已。
如果一个Class没有成员变量,只有成员方法,那么这个对象在内存中应该是1Byte。方法在内存中只存储一次。所以,这样的类,在创建和销毁上的开销可以忽略不计,完全交给JVM就可以了。
Effective Java中的建议:不要作优化。我们的设计思路还是应该遵循简单的、易于理解的思路。
由以上可知:把不变类(例如dao)设计成单例, 是不必要的。
单例的滥用在数据库连接池这块是最常见的,在并发的时候造成数据库排队操作,有严重的性能问题
分享到:
相关推荐
详解IOS 单例的两种方式 方法一: #pragma mark - #pragma mark sharedSingleton methods //单例函数 static RtDataModel *sharedSingletonManager = nil; + (RtDataModel *)sharedManager { @synchronized(self...
- **设计模式**:单例模式、工厂模式、观察者模式等经典设计模式的应用场景。 - **模块化开发**:将大型项目分解为可独立开发的小模块,提高代码复用性和可维护性。 - **第三方库使用**:介绍常用的Java库(如Apache...
:check_mark: 点安装 :check_mark: Sphinx文档 :check_mark: 记录配置 :check_mark: 进行类型检查 :check_mark: 使用JSON的模块配置 :check_mark: 模块全球商店 :check_mark: 单例模式 :check_mark: 模块元数据配置...
- **作者:** Mark Grand - **主要内容:** 本书详细讲解了Java NIO (New I/O) API的使用方法。 - **涵盖知识点:** - NIO的基本概念 - Channel和Buffer的使用 - 文件映射缓冲区 - 散列和收集 - Socket通道...
- **本地方法栈(Native Method Stack)**: 为虚拟机使用到的Native方法服务。 - **程序计数器(Program Counter Register)**: 当前线程所执行的字节码行号指示器。 #### 2. 栈帧结构 - **局部变量表**: 用于存储...
C中实现单例模式7.4 子类化Singleton7.5 线程安全7.6 在Cocoa Touch框架中使用单例模式7.6.1 使用UIApplication类7.6.2 使用UIAccelerometer类7.6.3 使用NSFileManager类7.7 总结第三部分 接口适配第8章 适配器8.1 ...
- **标记-整理(Mark-Compact)**:标记阶段与标记-清除相同,但后续会整理内存,使存活的对象向一端移动,然后清理边界之外的内存。 - **分代收集(Generational Collection)**:根据对象的生命周期将堆分为...
- CMS (Concurrent Mark Sweep): 并发标记清除算法。 - G1 (Garbage First): 采用分区算法,适用于大型堆。 #### 3. 字节码与类加载机制 - **字节码**: - `.class`文件中的二进制数据,由编译器生成。 - **类...
- 单例模式:饿汉式、懒汉式,双重检查锁定等实现方式。 - 工厂模式:简单工厂,工厂方法,抽象工厂。 - 模板方法、装饰者、代理等23种设计模式的应用。 9. **JVM优化** - 类加载机制:双亲委派模型,类加载器...
单态模式 马克-to-win Java视频 Singleton 单例模式
单态模式 马克-to-win java视频 Singleton 单例模式
单态模式 马克-to-win java视频 Singleton 单例模式
单例模式 :check_mark_button: 工厂模式 :check_mark_button: 抽象工厂模式 :check_mark_button: 简单工厂模式 :check_mark_button: 静态工厂模式 :check_mark_button: 原型模式 建造者模式 结构型模式实例 改进模式...
- **标记-整理(Mark-Compact)**:标记后将存活对象压缩到一端。 - **分代收集算法**:根据对象年龄分配不同的回收策略。 - **垃圾回收器有哪些**: - **Serial Collector**:单线程垃圾回收器。 - **Parallel...
//获取加密单例 QByteArray outEncryptBa; //加密后的 QByteArray outUncryptBa; //解密后的 pEncrypt->InitializePrivateKey(16, "abc"); //初始化密钥 pEncrypt->OnAesEncrypt(ba, outEncryptBa); //加密...
- **单例模式**:确保一个类只有一个实例,并提供全局访问点。 - **工厂模式**:提供创建对象的接口,但允许子类决定实例化哪个类。 - **建造者模式**:逐步构建一个复杂的对象,使其构建过程独立于其组成部分的组装...
《面向对象设计的UML实践》是一本由Mark Priestly撰写的书籍,该书由麦格劳希尔出版社出版,并被清华大学出版社引进到中国市场。这本书主要针对具有一定编程经验的学习者,旨在教授他们如何更抽象地表达面向对象程序...
- 垃圾回收算法(如Mark-Sweep、Copy、Mark-Compact、CMS、G1、ZGC)及其优缺点。 - 内存模型:堆内存、栈内存、方法区、本地方法栈、程序计数器。 5. **设计模式**: - 单例模式、工厂模式、观察者模式、装饰器...
- **垃圾回收算法(JVM)**:包括标记-清除(Mark-Sweep)、复制(Copying)、标记-整理(Mark-Compact)和分代收集(Generational Collection)算法。 - **垃圾回收机制和调用System.gc()的区别**:前者是JVM根据...