单例怎么写

1. 这个单例的写法跟一般的写法有什么区别 感觉这么写可以防止并发操作导致多次实例化例如以下常规写法:public class Singleton { private Singleton() {} private static Singleton instance = null; public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; }}当并发调用Singleton.getInstance()时 , 可能会让new Singleton()执行多次;当然改成如下形式也可以避免这种问题:public class Singleton { private Singleton() {} private static Singleton instance = new Singleton(); public static Singleton getInstance() { return instance; }} 。
2. 如何写一个简单的单例模式 一、基本的实现思路:
单例的实现主要是通过以下两个步骤:
1、将该类的构造方法定义为私有方法 , 这样其他处的代码就无法通过调用该类的构造方法来实例化该类的对象 , 只有通过该类提供的静态方法来得到该类的唯一实例;
2、在该类内提供一个静态方法 , 当我们调用这个方法时 , 如果类持有的引用不为空就返回这个引用 , 如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引用 。
二、示范如下:
1、枚举实现单例:
2、懒汉式线程不安全:
3、懒汉式线程安全:
4、饿汉式:
5、双重校验锁:
6、静态内部类:
扩展资料:
一、单列模式简介:
单例模式是设计模式中最简单的形式之一 。这一模式的目的是使得类的一个对象成为系统中的唯一实例 。要实现这一点 , 可以从客户端对其进行实例化开始 。因此需要用一种只允许生成对象类的唯一实例的机制 , “阻止”所有想要生成对象的访问 。使用工厂方法来限制实例化过程 。这个方法应该是静态方法(类方法) , 因为让类的实例去生成另一个唯一实例毫无意义 。
二、懒汉与饿汉:
1、懒汉方式:指全局的单例实例在第一次被使用时构建 。
2、饿汉方式:指全局的单例实例在类装载时构建 。
三、单例模式的三要点:
1、某个类只能有一个实例 。
2、它必须自行创建这个实例 。
3、它必须自行向整个系统提供这个实例 。
四、优缺点:
1、优点:
①实例控制:单例模式会阻止其他对象实例化其自己的单例对象的副本 , 从而确保所有对象都访问唯一实例 。
②灵活性:因为类控制了实例化过程 , 所以类可以灵活更改实例化过程 。
2、缺点:
①开销:虽然数量很少 , 但如果每次对象请求引用时都要检查是否存在类的实例 , 将仍然需要一些开销 。可以通过使用静态初始化解决此问题 。
②可能的开发混淆:使用单例对象(尤其在类库中定义的对象)时 , 开发人员必须记住自己不能使用new关键字实例化对象 。因为可能无法访问库源代码 , 因此应用程序开发人员可能会意外发现自己无法直接实例化此类 。
③对象生存期:不能解决删除单个对象的问题 。在提供内存管理的语言中(例如基于.NET Framework的语言) , 只有单例类能够导致实例被取消分配 , 因为它包含对该实例的私有引用 。在某些语言中(如 C++) , 其他类可以删除对象实例 , 但这样会导致单例类中出现悬浮引用 。
参考资料:百度百科单列模式
3. 单例模式怎么写,求一份饿汉式单例 一份懒汉式单例 //懒汉式
public class A{
public static A a = null;
public A(){
}
public A getInstance(){