一、单例设计模式
解决一个类在内存中只存在一个对象
二、怎样保证对象的唯一呢?
- 避免其他程序过多建立该类对象,先禁止其他程序建立该类对象
- 为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象
- 为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式
三、这三部怎么用代码体现呢?
- 将构造函数私有化
- 在类中创建一个本类对象
- 提供一个方法可以获取到该对象
四、示例
class Student { private Student(){}//禁止在外部创建对象 private static Student s=new Student();//自己建一对象 public static Student getStudent()//方法,获取对象 { return s; } //对于事物该怎么描述还怎么描述 //当需要将该事物的对象保证在内存中唯一时,就将以上的三步加上即可 private int age; public void setAge(int age) { this.age=age; } public int getAge() { return age; } }
五、单例设计模式有两种
1,饿汉式:Single类一进内存,就已经创建好了对象
class Single { private Single(){} private static Single s = new Single(); public static Single getInstance() { return s; } }
2,懒汉式:single类进内存,对象还没有存在,只有调用了getInstance()方法时,才建立对象,是延迟加载方式
class Single { private Single(){} private static Single s = null; public static Single getInstance() { if (s == null) { s = new Single(); } return s; } }
3,上述代码在在多线程中存在安全隐患,有可能建立两个甚至多个Single对象
优化:
class Single { private Single(){} private static Single s = null; public static Single getInstance() { if (s == null) { synchronized(Single.class) { if(s == null) s = new Single(); } } return s; } }
六、在实际开发中,用饿汉式,更简洁,安全
Runtime类就是采用单例模式设计的
相关推荐
PHP单例设计模式,连接多数据库源码 单例模式的三个特点 1: 一个类只能有一个实例 2: 它保修自行创建这个实例 3: 必须自行向整个系统提供这个实例. 单例模式中主要的角色 Singleton定义一个Instance操作,允许客户...
本压缩包含有两个demo,分别对应<设计模式>第2版,刘伟这本书,单例模式这一章课后习题6、7,如果问题请留言一起探讨,谢谢!
27_多线程_第2天(线程安全、线程同步、等待唤醒机制、单例设计模式)_讲义
1.模式定义/应用场景/类图分析 2.字节码知识/字节码指令重排序 3.类加载机制 4.JVM序列化机制 5.单例模式在Spring框架 & JDK源码中的应用
2. 懒汉单例设计模式 多例设计模式案例演示 #### 多例设计模式的作用 多例模式,是一种常用的软件设计模式。通过多例模式可以保证系统中,应用该模式设计的类有**固定数量**的对象产生。 **说白了,多例设计模式...
多线程的知识点讲解,,,线程安全,线程同步,,等待唤醒机制,单例设计模式,,,,,,,,,让你更好理解多线程
1. 饿汉式 2. 懒汉式 3.Holder方式 4.枚举方式
1、掌握单例模式的应用场景。 2、掌握 IDEA 环境下的多线程调试方式。 3、掌握保证线程安全的单例模式策略。 4、掌握反射暴力攻击单例解决方案及原理分析。 5、序列化破坏单例的原理及解决方案。 6、掌握常见的...
1)程序功能:单例模式设计Memcache和Redis操作类,采用PHP编写。...3)原创作品,出自"CleverCode的博客",分类为《设计模式之PHP项目应用》。 4)欢迎大家关注博客更多精彩的内容:http://blog.csdn.net/CleverCode。
单例模式的七种实现方法以及分析,可以作文大作业提交 1.前言 4 1.1 课题的研究背景 4 1.2 课题主要研究目标 4 2.相关技术简介 4 2.1Java简介 4 2.2IDEA简介 4 3. 单例模式的7种实现方式 5 ...5.设计模式学习总结: 15
。
。
//单例模式,始终只产生一个对象 /*public class SingleTest { public static void main(String[] args) { SingleTon singleTon1=SingleTon.getInstance(); SingleTon singleTon2=SingleTon.getInstance(); ...
C#设计模式学习与演变过程-2-单例模式,通过代码的演变过程系统地学习单例模式,代码包括:简单单例、加锁单例、双检单例、饿汉式单例。
这篇文章主要介绍了python单例设计模式实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 所谓单例,就是让类创建对象的时候,在系统中只有唯一的一个...
设计模式之单利模式,两种单例模式的实现方法:恶汉式和懒汉式;
本文实例讲述了Python 单例设计模式用法。分享给大家供大家参考,具体如下: demo.py(单例): class MusicPlayer(object): # 类属性 记录对象引用 instance = None def __new__(cls, *args, **kwargs): # 1. ...
例如,如果InstanceLimit.cfg的内容为2,则LimitInstanceClass最多可以同时存在2个对象。LimitInstanceClass的对象有一个整型成员变量id,保存对象的编号;有一个boolean型变量isBusy,如果该变量的值为true,表示该...
这是单例设计模式的基本示例。 您将在此仓库中找到两个示例。 首先是线程安全的单例,其次不是。 测试的输出是: synchronizedTest Started... Thread 2 instance is : ...
设计模式是构建大型软件系统zui强大的方法之一,优化软件架构和设计...全书囊括单例设计模式、工厂模式、门面模式、代理模式、观察者模式、命令模式、模板方法模式、复合模式、状态设计模式以及反模式等多种设计模式。