Head First设计模式学习笔记-------(5)单体模式

这回我们说的是单体模式。

单体模式有什么好讲的?不就是只有一个实例化对象吗?难道还有什么吗?

的确,单体模式就是创建一个独一无二的对象。但是,其实对象只有一个,在实现过程中还是会遇到许许多多的问题的。接下来让我们看看这个模式吧。

我们这回开门见山,直接来看下一个单间模式的实现吧:

public class Singleton {
    private static Singleton uniqueInstance;  //利用一个静态变量来记录Singleton类的唯一实例

    private Singleton() {}     //把构造器声明为私有的,只有自Singleton类内才可以调用构造器

    public static Singleton getInstance () {      //用grtInstance方法实例化对象,并返回这个实例
        if (uniqueInstance == null)
            uniqueInstance = new Singleton();
        return uniqueInstance;
    }
}
让我们进一步了解getInstance方法里面的一切吧。



是不是感觉很容易理解。

单件模式:确保一个类只有一个实例,并提供一个全局访问点。

让我们来看看单件模式的类图吧:


类图是不是很简单,但是不要以为在实际运用的时候就很容易,单件模式在运用的时候还是会出现一些问题的,比如在多线程的时候,就回出现创建对象多个的问题。


多线程引起的单件模式错误解决办法有多种,这里我们就简单说一种-----------------双重检查加锁


好了,单件模式简单介绍玩了,接下来就是总结了:

1:单件模式确保程序中一个类最多只有一个实例。

2:单件模式也提供访问这个实例的全局点。

3:在JAVA中实现单件模式需要私有的构造器、一个静态方法和一个静态变量。

4:确定在性能和资源上的限制,然后小心地选择适合的方案来实现单件,以解决多线程的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值