课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
单例模式是程序员在学习软件开发设计模式的时候需要重点掌握的一个设计模式,下面我们就通过案例分析来了解一下,单例模式的应用方法和应用场景分析。
1、单例模式
单例模式是创建型模式。
单例的定义:“一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例设计模式,简称单例模式。”定义中提到,“一个类只允许创建一个对象”。那对象的性的作用范围是指进程内只允许创建一个对象,也就是说,单例模式创建的对象是进程的(而非线程)
2、饿汉式
类加载的时候就会初始化这个实例,JVM保证实例,线程安全,但是可以通过反射破坏
3、懒汉式
虽然可以实现按需初始化,但是线程不安全,因为在判断INSTANCE==null的时候,如果是多个线程操作的话,一个线程还没有把INSTANCE初始化好,另外一个线程判断INSTANCE==null得到true,就会继续初始化
4、为什么要使用单例
处理资源访问冲突
比如写日志的类,如果不使用单例,就必须使用锁机制来解决日志被覆盖的问题。
表示全局类
比如配置信息类,在系统中,只有一个配置文件,当配置文件加载到内存中,以对象形式存在,也理所应当只有一份。
ID生成器也是类似的机制。如果程序中有两个对象,那就会存在生成重复ID的情况,所以,我们应该将ID生成器类设计为单例。
5、集群模式下单例
我们需要把这个单例对象序列化并存储到外部共享存储区(比如文件)。进程在使用这个单例对象的时候,需要先从外部共享存储区中将它读取到内存,并反序列化成对象,然后再使用,使用完成之后还需要再存储回外部共享存储区。为了保证任何时刻,在进程间都只有一份对象存在,一个进程在获取到对象之后,需要对对象加锁,避免其他进程再将其获取。在进程使用完这个对象之后,还需要显式地将对象从内存中删除,并且释放对对象的加锁。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。