设计模式之 单例设计模式

来源:互联网 发布:非线性叙事结构,知乎 编辑:程序博客网 时间:2024/04/25 05:27

设计模式只是一种思想,和语言无关,可以用java实现,也可以用c++甚至C以及其他语言来实现。


单例设计模式:

首先啥是单例??单例就是在整个应用中这个对象只能被创建一次。

其次什么情况下使用单例??只能被使用一次的东西可以用单例来实现,例如摄像头的管理等等,就是某个对象你只想出现一次。

接下来说怎么实现:

1:私有化构造函数

说明构造函数私有化了,其他类就无法直接new了,可以在自己的类中来控制了。

2:提供获取实例方法:

在类中提供一个公有的方法给其他类调用,这个方法能创建唯一的对象。


其实很简单了。

但是对于单例,我们又将其分为两种:

一种是饿汉式:顾名思义很饥渴,呵呵,用词不当了。

另一种懒汉式:顾名思义就是推一下动一下的感觉,虽然不是很贴切。

贴上java的实现代码:


饿汉式实现:

publicclass EagerSingleton {
private static EagerSingleton instance = new EagerSingleton();
/**
* 私有默认构造子
*/
private EagerSingleton(){}
/**
* 静态工厂方法
*/
public static EagerSingleton getInstance(){
return instance;
}
}

可见,不管三七二十一,它先在内存中创建了一个对象(static),都不管你是否去使用了,很饥渴吧




懒汉式实现
public class LazySingleton {
private static LazySingleton instance = null;
/**
* 私有默认构造子
*/
private LazySingleton(){}
/**
* 静态工厂方法
*/
public static synchronized LazySingleton getInstance(){
if(instance == null){
instance = new LazySingleton();
}
return instance;
}
}

懒汉式则是在你去使用的时候再去创建对象,但要注意加上synchronized,来防止多线程的时候的冲突。


相信到这里,单例模式你已经相当熟悉了。找个合适的地方赶紧用一用吧。

原创粉丝点击