设计模式之单例模式

    使用场景:

    在软件开发中,软件开发人员希望一些服务类且仅有一个实例供其他程序使用。如:打印机服务程序或对于系统配环境的一些控制,为了避免并发访问造成的不一致问题,希望仅为其他程序提供一个实例;又如,要生成唯一序列号的环境或创建一个对象需要消耗的资源过多(要访问IO和数据库等资源)。

    对于整个系统使用的对象可以使用一个全局变量,在正确编写程序的情况下也可以保证唯一的一个实例,但如果系统随之不断扩张,就无法保证系统中有且只有一个实例。

单例模式的类图:

单例模式是一个比较简单的设计模式,其本质上就是自行实例化并始终向系统提供某个类的唯一实例。

 

单例模式实现代码:

懒汉模式:

public class Singleton{
private static Singleton singleton=null;

private Singleton(){
}

public static Singleton getSingleton(){
if(singleton=null)
{
singleton=new Singleton();
}
return singleton;
}
}

该模式在多线程并发模式下是线程不安全的,所有以防高并发时出现问题,可以在getSingleton方法前加上synchronized关键字,当然也可以在getSingleton方法内加上synchronized关键字,这是针对java来说,如果用.net则要用lock锁来实现线程安全。

饿汉模式:

public class Singleton{
private static final Singleton singleton=new Singleton();

private Singleton(){
}

public static Singleton getSingleton(){
return singleton;
}
}
原文地址:https://www.cnblogs.com/sumuncle/p/4347940.html