设计模式 --单例模式

Posted 小明在努力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式 --单例模式相关的知识,希望对你有一定的参考价值。

//饿汉式: 类加载就创建对象
package
Run; class Main { public static void main(String[] args) { Single s = Single.getInstance(); Single ss = Single.getInstance(); System.out.println(s); System.out.println(ss); } } class Single{ static Single s = new Single(); private Single() {} public static Single getInstance() { return s;} }

note:

1.两个对象引用的地址一样,说明来自于同一对象。注意书写getInstance方法时,需要将其静态化,因为外界无法new对象,那么只能通过类来访问。

因为getInstance方法静态了,所以其访问的成员变量s也必须为静态。

2. 饿汉式在开发中更为常用, 因为其线程安全.

3.缺点:类加载就实例化,提前占用了系统资源.

 

/*
 * 懒汉模式,类加载还没有对象
 * 延迟加载 : delay-load
 */
class Single
{
    private static Single s = null;
    
    private Single() {}
    public static Single getInstance()
    {
        if ( s == null)
            s = new Single();
        return s;
    }
}

note:

1.线程不安全. 个人猜想,多个线程同时访问了getInstance(),导致创建了两个对象,并返回使用,导致对象不唯一.

2.优点: 饿汉式,其实是延迟加载(delay-load),只在第一次使用的时候进行实例化,延缓一时的系统资源紧张.

3.可经修改(同步锁???)更改为线程安全,但是其安全性下降.(Todo:学到多线程学习补充)

4.存在高性能线程安全的懒汉式单例的写法.(Todo:学到多线程学习补充)

以上是关于设计模式 --单例模式的主要内容,如果未能解决你的问题,请参考以下文章

C#设计模式--桥接模式

23种设计模式总结

86 设计模式23种设计模式概述

设计模式概述(23种设计模式目录)

设计模式

设计模式大杂烩(24种设计模式的总结及学习设计模式的几点建议)