设计模式(三)单例模式

单例模式三要点:
单例类只能有一个实例
单例类必须自己创建这个实例
单例类必须自行向整个系统提供这个实例

单例类的代码结构:

*一个静态私有成员变量;//用于判断是否只有一个实例
一个私有构造函数;//确保用户无法通过new关键字直接实例化它
一个静态公有的工厂方法。*//自己创建实例

单例模式代码模板:
在这里插入图片描述
单例模式例子:
在这里插入图片描述

public class IdentityCardNo
{
    private static IdentityCardNo instance=null;//静态私有成员变量
    private String no;

    private IdentityCardNo()//私有构造函数
    {
    }

    public static IdentityCardNo getInstance()//静态公有的工厂方法
    {
        if(instance==null)
        {
            System.out.println("第一次办理身份证,分配新号码!");
            instance=new IdentityCardNo();
            instance.setIdentityCardNo("No400011112222");
        }
        else
        {
            System.out.println("重复办理身份证,获取旧号码!");
        }
        return instance;
    }

    private void setIdentityCardNo(String no)
    {
        this.no=no;
    }

    public String getIdentityCardNo()
    {
        return this.no;
    }

}
public class Client
{
    public static void main(String a[])
    {
        IdentityCardNo no1,no2;
        no1=IdentityCardNo.getInstance();
        no2=IdentityCardNo.getInstance();
        System.out.println("身份证号码是否一致:" + (no1==no2));

        String str1,str2;
        str1=no1.getIdentityCardNo();
        str2=no1.getIdentityCardNo();
        System.out.println("第一次号码:" + str1);
        System.out.println("第二次号码:" + str2);
        System.out.println("内容是否相等:" + str1.equalsIgnoreCase(str2));
        System.out.println("是否是相同对象:" + (str1==str2));
    }
}

小结:
单例模式的目的:
保证一个类仅有一个实例,并提供一个访问它的全局访问点。

为了防止在外部对其实例化,将构造函数设计为私有;
静态工厂方法负责检验实例的存在性并实例化自己,然后存储在静态成员变量中。
单例模式使用情况:系统只需要一个实例对象;客户调用类的单个实例只允许使用一个公共访问点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值