码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础-单列设计模式

时间:2017-04-20 17:00:10      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:targe   资源管理器   知识库   spooler   管理   安全   ati   延迟加载   其他   

概念:
  Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。
  单例模式有以下特点:
  1、单例类只能有一个实例。
  2、单例类必须自己创建自己的唯一实例。
  3、单例类必须给所有其他对象提供这一实例。
  单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干通信端口,系统应当集中管理这些通信端口,以避免一个通信端口同时被两个请求同时调用。总之,选择单例模式就是为了避免不一致状态,避免政出多头。

今天我们写 懒汉 和 饿汉

先来饿汉

code如下

class Single //饿汉式
{
static Single s = new Single();
private Single(){}

public void speak(){
System.out.println("haoren");
}

public static Single made(){
return s;
}
}

我们可以看到 饿汉 老早就已经 准备好 吃饭的准备了 一开始 就 已经 new 了Single 也就是 说 他已经在把 吃饭用的筷子 盘子 早就 拿出来了 就等 上菜 

然后是 懒汉式

code 如下 

class Single //懒汉式
{
static Single s = null;
private Single(){}

public void speak(){
System.out.println("haoren");
}

public static Single made(){
if(s==null)
s = new Single();
return s;
}
}

 我们可以看到 懒汉 他貌似 对吃 不是很在意 吃之前还要坚持一下 饭菜 可口不 还要 闻闻一下  然后再吃 =2333

他们之间的对比

1、线程安全:

饿汉式天生就是线程安全的,可以直接用于多线程而不会出现问题,

 

2、资源加载和性能:

饿汉式在类创建的同时就实例化一个静态对象出来,不管之后会不会使用这个单例,都会占据一定的内存,但是相应的,在第一次调用时速度也会更快,因为其资源已经初始化完成,

而懒汉式顾名思义,会延迟加载,在第一次使用该单例的时候才会实例化对象出来,第一次调用时要做初始化,如果要做的工作比较多,性能上会有些延迟,之后就和饿汉式一样了。

 

Java基础-单列设计模式

标签:targe   资源管理器   知识库   spooler   管理   安全   ati   延迟加载   其他   

原文地址:http://www.cnblogs.com/hwcs/p/6739461.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!