开发中常用的设计模式

来源:互联网 发布:淘宝购物卡哪里买 编辑:程序博客网 时间:2024/06/05 18:57

开发中常用的设计模式

一、单例模式

什么叫单例模式?

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例,在单例模式中,又分为懒汉式饿汉式,其特点为:
1、这个类只能有一个实例
2、它必须自行创建这个实例
3、它必须自行向整个系统提供这个实例。

下面我们单独介绍下,他们之间的调用和区别

1、懒汉式:

从字意上我们很容易看出来,这个方法是在加载的时候才会被调用,属于线程不安全的,如果启用多线程的时候,同时调用入口方法获取实例时,会报错,例如:
//懒汉单例,线程不安全,当启动多线程,同时获取多个实例时会报错public class SingleTon{    public SingleTon(){}    private static SingleTon instance = null;    private static SingleTon getInstance(){        if(instance == null){            instance = new SingleTon();        }        return instance;    }}
//懒汉模式也提供一种解决同步调用时不能正常工作的方法,使用synchronized声明访问点,但是工作效率低public class SingleTon{    private static SingleTon instance = null;    //此时如果不加上同步锁的话,线程是不安全的,所以要加上同步锁    private static synchronized SingleTon getInstance()         {    if(instance == null){        instance = new SingleTon();    }    return instance;    }}//看到上面的代码,是不是感觉这样写懒汉式已经可以了呢?其实不然,懒汉式还有一种写法叫做双重检查模式,代码如下:public class SingleTon{    private static SingleTon instance = null;    private SingleTon(){    }    public static SingleTon getInstance(){        if(instance == null){            Synchronized(SingleTon.class){                if(instance == null){                    instance = new SingleTon();                }            }        }    }}

2、饿汉式:

饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以天生是线程安全的。

public class SingleTon1{    private static SingleTon1 instance =new SingleTon1();    public SingleTon1(){}    private static SingleTon1 getInstance(){        return instance;    }}
1 0
原创粉丝点击