设计模式1之单例模式

    个人认为,单例模式是GOF23种设计模式中最简单的一个,没有之一,就不做过多介绍了,直奔主题 。

A、介绍

    Singleton拥有一个私有构造函数,确保用户无法通过new直接实例它。除此之外,该模式中包含一个静态私有成员变量instance与静态公有方法Instance()。Instance方法负责检验并实例化自己,然后存储在静态成员变量中,以确保只有一个实例被创建。


B、意义
    希望对象只创建一个实例,并且提供一个全局的访问点。
    一句话:同一个类在一个程序中有且仅能有一个实例。
    目的:生成只有一个实例的类。


C、结构
类似于封装字段,而这是将一个类作为一个static对象进行封装,且只有get,没有set,使其不能再次被实例化。单例模式有多种实现方式,其结构分别如下:
I.懒惰式(定义时赋值)
1.定义一个static对象,值为自己的一个new实例
2.定义一个static方法,返回这个实例
II.饥饿式(首次使用时赋值)
1.定义一个static对象,不赋值
2.定义一个static synchronized方法:如果上一步的static对象为空,返回一个new实例;如果不为空,返回static对象
III.饥饿式(本质是一个静态对象)
通过修饰符static final声明实例,static表现出单例特征,final表现出只读特征,不能再次被实例化


D、实例
I、懒惰式
public class Singleton{
    private static Singleton instance = new Singleton();
    private Singleton(){
    }
    public static Singleton getInstance(){
        return instance;
    }
}


II、饥饿式
public class Singleton{
    private static Singleton instance = null;
    private Singleton(){
    }
    public static synchronized Singleton getInstance(){
        if (instance != null) {
            return instance;
        }
        else {
            return new Singleton();
        }
    }
}
III、另类式
public class Singleton{
    public static final Singleton INSTANCE = new Singleton();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值