(八)Java入门--单例设计模式

xiaoxiao2021-02-28  28


一、概念

保证一个类在内存中的对象唯一性。(单个实例设计模式)、 (在堆中只有一个对象;方法区保存着构造函数和公有方法等。)

二、设计步骤

(1)私有化该类的构造函数(private) (2)在本类中创建一个本类对象(private static)或者在方法中创建。 (3)定义一个公有的方法,将创建的对象返回(public static)。

三、代码样例

1、懒汉式:延迟加载对象形式,对象在公有方法建立;(存在多线程安全隐患)。

class SingleDemo1 { private static SingleDemo1 s = null; private SingleDemo1() { } public static SingleDemo1 getInstance() { if(s == null) s = new SingleDemo1(); return s; } }

2、饿汉式:只要一旦加载类就创建对象。(开发用的多)

public class SingleDemo { private static SingleDemo s = new SingleDemo(); private SingleDemo() { } public static SingleDemo getInstance() { return s; } }

四、多线程下的单例设计模式

1、懒汉式会出现安全问题:可能会创建多个对象,导致对象不唯一性。 2、解决:

public static SingleDemo1 getInstance() { //只有在空的时候,才会出现隐患,不空了就不要判断锁 if (s == null) { synchronized (SingleDemo1.class) { if (s == null) s = new SingleDemo1(); } } return s; }

注意:如果使用同步函数的方法,每次调用方法都会判断同步锁导致降低效率。

转载请注明原文地址: https://www.6miu.com/read-2632256.html

最新回复(0)