【Java设计模式】java单例模式
2015-12-11 09:50
176 查看
解释一下什么是单例模式:
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。总之,选择单例模式就是为了避免不一致状态,避免政出多头。
为什么我要用到单例模式呢?
就比如,配置文件的读取类,当一个开着服务一直跑的java程序,它每隔一段时间就要用到配置文件中的参数,你总不能让程序每次一直new 一个对象出来。最好的办法就是,一启动程序的时候new一个对象,然后后面一直用这个对象里面的属性值就好了。这就要用到单例设计模式了。
example:
一、懒汉式单例
二、饿汉式单例
//饿汉式单例类.在类初始化时,已经自行实例化
单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。总之,选择单例模式就是为了避免不一致状态,避免政出多头。
为什么我要用到单例模式呢?
就比如,配置文件的读取类,当一个开着服务一直跑的java程序,它每隔一段时间就要用到配置文件中的参数,你总不能让程序每次一直new 一个对象出来。最好的办法就是,一启动程序的时候new一个对象,然后后面一直用这个对象里面的属性值就好了。这就要用到单例设计模式了。
example:
一、懒汉式单例
public class Singleton { private static class LazyHolder { private static final Singleton INSTANCE = new Singleton(); } private Singleton (){} public static final Singleton getInstance() { return LazyHolder.INSTANCE; } }
二、饿汉式单例
//饿汉式单例类.在类初始化时,已经自行实例化
public class Singleton1 { private Singleton1() {} private static final Singleton1 single = new Singleton1(); //静态工厂方法 public static Singleton1 getInstance() { return single; } }
相关文章推荐
- spring mvc 简介和实例
- java.lang.UnsupportedClassVersionError: *** : Unsupported major.minor version 51.0
- java学习笔记_高级篇必会(可变参数,枚举)
- JSP 获得Spring 注射对象
- Java之多线程编程
- java框架模式_低耦合高内聚法则
- MyEclipse内存不足之JVM内存浅谈
- The currently displayed page contains invalid values eclipse
- eclipse切换工作空间,工程报错。context等报错
- Java之异常处理
- spring.net中间IoC、DI和MVC
- 将struts2和hibernate结合实现一个简单的小程序(一)
- Java之包和接口
- org.tigris.subversion.javahl.ClientException: Attempted to lock an already-locked dir异常解决方法 【转】
- Java之继承
- Java之方法和类的深入分析
- Java之类
- Spring MVC工作原理 及注解说明
- eclipse中.project文件和.classpath文件详解
- Java之控制语句