单例形式单例形式实例 (单例模式简单例子)
本文目录导航:
单例形式单例形式实例
在Java中,单例形式确保一个类Class只要一个实例存在。
这种形式重要作用在于控制类的实例创立环节,确保一切对象都能访问到惟一实例,以实事实例控制、灵敏性和缩小内存占用。
单例形式实例代码如下:
public class Singleton {
private static Singleton instance = null;
private Singleton(){
//初始化代码
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
return instance;
以下是三种经常出现方式:
第一种:最罕用方式
public class Singleton {
private static Singleton instance = null;
private Singleton(){
//初始化代码
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
return instance;
第二种:外部类方式
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton(){
//初始化代码
public static Singleton getInstance(){
return instance;
第三种:双重审核锁方式
public class Singleton {
private static Singleton instance = null;
private Singleton(){
//初始化代码
public static Singleton getInstance(){
if(instance == null){
synchronized(){
if(null == instance){
instance = new Singleton();
return instance;
在Flex中,可以经常使用`ModelLocator`类成功单例形式,其外部成功了自身的实例化。
javascript
package models
[Bindable]
public class ModelLocator extends EventDispatcher {
public static var _instance:ModelLocator;
public static function getInstance():ModelLocator {
if(_instance == null){
_instance = new ModelLocator();
return _instance;
C#中成功单例形式相似,确保实例惟一性并提供全局访问点。
// 用法说明
// 保障一个类仅有一个实例,并提供一个访问它的全局访问点
// 成功要点
// Singleton形式是限度而不是改良类的创立。
// Singleton类中的实例结构器可以设置为Protected以准许子类派生。
// Singleton形式普通不要支持Icloneable接口,由于这或者造成多个对象实例,与Singleton形式的初衷违反。
// Singleton形式普通不要支持序列化,这也有或者造成多个对象实例,这也与Singleton形式的初衷违反。
// Singleton只思考了对象创立的治理,没有思考到销毁的治理,就支持渣滓回收的平台和对象的开支来讲,咱们普通没必要对其销毁启动不凡的治理。
// 了解和裁减Singleton形式的外围是“如何控制用户经常使用new对一个类的结构器的恣意调用”。
// 可以很繁难的修正一个Singleton,使它有少数几个实例,这样做是准许的而且是无心义的。
// 好处
// 实例控制:Singleton会阻止其余对象实例化其自己的Singleton对象的正本,从而确保一切对象都访问惟一实例
// 灵敏性:由于类控制了实例化环节,所以类可以愈加灵敏修正实例化环节
// 缺陷
// 开支:只管数量很少,但假设每次对象恳求援用时都要审核能否存在类的实例,将依然须要一些开支。
可以经过经常使用静态初始化处置此疑问。
// 或者的开发混杂:经常使用singleton对象时,开发人员必定记住自己不能经常使用new关键字实例化对象。
由于或者无法访问库源代码,因此运行程序开发人员或者会异常发现自己无法间接实例化此类。
// 对象的生定期:Singleton不能处置删除单个对象的疑问。
单例形式在不同场景下有着宽泛的运行,比如确保系统中有且只要一个窗口治理器、打印机或COM口实例等。
裁减资料
单例形式是一种罕用的软件设计形式。
在它的外围结构中只蕴含一个被称为单例类的不凡类。
经过单例形式可以保障系统中一个类只要一个实例而且该实例易于外界访问,从而繁难对实例个数的控制并浪费系统资源。
假设宿愿在系统中某个类的对象只能存在一个,单例形式是最好的处置打算。
java 单例形式这个要怎样了解?
单例形式(Singleton Pattern)是 Java 中最繁难的设计形式之一。
这种类型的设计形式属于创立型形式,它提供了一种创立对象的最佳方式。
这种形式触及到一个繁多的类,该类担任创立自己的对象,同时确保只要单个对象被创立。
这个类提供了一种访问其惟一的对象的方式,可以间接访问,不须要实例化该类的对象。
留意:1、单例类只能有一个实例。
2、单例类必定自己创立自己的惟一实例。
3、单例类必定给一切其余对象提供这一实例。
引见用意:保障一个类仅有一个实例,并提供一个访问它的全局访问点。
重要处置:一个全局经常使用的类频繁地创立与销毁。
何时经常使用:当您想控制实例数目,节俭系统资源的时刻。
如何处置:判别系统能否曾经有这个单例,假设有则前往,假设没有则创立。
关键代码:结构函数是私有的。
运行实例:1、一个班级只要一个班主任。
2、Windows 是多进程多线程的,在操作一个文件的时刻,就无法防止地产生多个进程或线程同时操作一个文件的现象,所以一切文件的处置必定经过惟一的实例来启动。
3、一些设施治理器经常设计为单例形式,比如一个电脑有两台打印机,在输入的时刻就要处置不能两台打印机打印同一个文件。
好处:1、在内存里只要一个实例,缩小了内存的开支,尤其是频繁的创立和销毁实例(比如治理学院首页页面缓存)。
2、防止对资源的多重占用(比如写文件操作)。
缺陷:没有接口,不能承袭,与繁多职责准则抵触,一个类应该只关心外部逻辑,而不关心外面怎样样来实例化。
经常使用场景:1、要求消费惟一序列号。
2、WEB 中的计数器,不用每次刷新都在数据库里加一次性,用单例先缓存起来。
3、创立的一个对象须要消耗的资源过多,比如 I/O 与数据库的衔接等。
留意事项:getInstance() 方法中须要经常使用同步锁 synchronized () 防止多线程同时进入形成 instance 被屡次实例化。
单例形式的定义
单例形式最后的定义产生于《设计形式》(艾迪生维斯理, 1994):“保障一个类仅有一个实例,并提供一个访问它的全局访问点。
”Java中单例形式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。
”单例形式确保一个类只要一个实例,自行提供这个实例并向整个系统提供这个实例。
特点:1、一个类只能有一个实例;2、自己创立这个实例;3、整个系统都要经常使用这个实例。