设计模式

设计模式-单例模式

2016-05-31  本文已影响141人  HJXANDHMR

我们前面已经学习了简单工厂模式,工厂方法模式,抽象工厂模式,今天我们来学习下同样是创建型模式的 单例模式 (Singleton Pattern)。

模式定义

单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。

模式结构

单例模式包含如下角色:

Singleton: 单例

UML图

SingletonUML.png

代码实现

Singleton.java


public class Singleton {
    private static Singleton sSingleton;

    //将构造函数私有化
    private Singleton() {
    }

    //提供一个全家的静态方法
    public static Singleton getSingleton() {
        if (sSingleton == null) {
            sSingleton = new Singleton();
        }
        return sSingleton;
    }

    public void singletonOperation() {
        System.out.println("singletonOperation");
    }
}

测试类


public class MyClass {

    public static void main(String[] args) {
        Singleton singleton = Singleton.getSingleton();
        singleton.singletonOperation();
    }
}


模式分析

单例模式的目的是保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式包含的角色只有一个,就是单例类——Singleton。单例类拥有一个私有构造函数,确保用户无法通过new关键字直接实例化它。除此之外,该模式中包含一个静态私有成员变量与静态公有的工厂方法,该工厂方法负责检验实例的存在性并实例化自己,然后存储在静态成员变量中,以确保只有一个实例被创建。

在单例模式的实现过程中,需要注意如下三点:

单例模式的优点

单例模式的缺点

最后总结下,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式的要点有三个:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。单例模式是一种对象创建型模式。

参考
http://design-patterns.readthedocs.io/zh_CN/latest/creational_patterns/singleton.html

欢迎大家关注我的微信公众号,我会不定期的分享些Android开发的技巧

上一篇下一篇

猜你喜欢

热点阅读