博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单例设计模式
阅读量:4352 次
发布时间:2019-06-07

本文共 830 字,大约阅读时间需要 2 分钟。

今天学习了一下单例设计模式,什么是单例设计模式呢?就和古代时候只能有一个皇帝一样,有些时候我们会要求某个类只能有一个对象实例,例如工具类。那么如何实现呢?
正常的一个类定义如下:
 
  1. class SingleTon{
  2. }
在构造对象实例的时候我们使用new SingleTon(),那么这样就可以构建多个对象实例,为了不让用户可以任意的构建对象,这里我们把类的默认构造函数重写一下并声明为private,问题又来了,这样做的话会导致一个对象也new不了。为了解决这个问题,可以在类的内部new一个类对象,这就产生了单例设计模式的两种方法,“饿汉式”和“懒汉式”。
“饿汉式”SingleTon类定义如下:
 
  1. class SingleTon1{
  2. private SingleTon1(){
  3. }
  4. public static SingleTon instance = new SingleTon1();
  5. }
"懒汉式":
 
  1. class SingleTon2{
  2. private SingleTon2(){
  3. }
  4. private static SingleTon2 instance;
  5. public static SingleTon2 getInstance() {
  6. if (instance == null) {
  7. instance = new SingleTon2();
  8. }
  9. return instance;
  10. }
  11. }
饿汉式和懒汉式的区别在于什么时候实例化instance对象,饿汉式在类加载的时候就实例化了instance对象,而懒汉式只有在第一次调用getInstance函数是才实例化instance对象,所以饿汉式在类加载的时候比较慢而在外面使用instance的时候比较快,相反,懒汉式则在类加载的时候比较快而在第一次使用getInstance的时候比较慢。

转载于:https://www.cnblogs.com/starlitnext/p/4092988.html

你可能感兴趣的文章
Android关于buildToolVersion与CompileSdkVersion的区别
查看>>
袋鼠云日志,日志分析没那么容易
查看>>
缓存穿透 缓存雪崩 缓存并发
查看>>
MySQL表的操作
查看>>
pt-table-checksum解读【转】
查看>>
matlab中类的定义和使用
查看>>
NIO(2):Channel
查看>>
Consistent Hashing算法
查看>>
C++基础--完善Socket C/S ,实现客户端,服务器端断开重连
查看>>
lvs,nginx反向代理,虚拟主机
查看>>
jquip,更简洁的代码
查看>>
【OJ】PAT-A解题报告
查看>>
文档语法
查看>>
利用套接字实现进程通信一例
查看>>
linux中shell变量$#,$@,$0,$1,$2的含义解释
查看>>
常用的shell命令整理
查看>>
A Brief Introduction to the Design of UBIFS
查看>>
了解你的Linux系统:必须掌握的20个命令
查看>>
js setInterval 启用&停止
查看>>
knockoutJS学习笔记04:监控属性
查看>>