设计模式原则7----单例模式

个人博客:打开链接

单例模式的定义

单例模式(Singleton Pattern)是很简单的模式,定义为:
Ensure a class has only one instance, and provide a global point of access to it.
确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

我是皇帝我独苗

单例模式最典型的例子就是古时候的皇帝,有且仅有一个。皇帝每天要上朝接待臣子,处理政务。所以皇帝和臣子的UML类图为:
这里写图片描述
为了防止单例对象通过复制、反射等方式被创建,我们把构造函数设置成private私有访问权限。
皇帝类:

public class Emperor {
    //初始化一个皇帝
    private static final Emperor emperor = new Emperor();
    private Emperor(){
        //世俗和道德约束你,目的就是不希望产生第二个皇帝
    }
    public static Emperor getInstance(){
        return emperor;
    }
    //皇帝发话了
    public static void say(){
        System.out.println("我就是唯一的皇帝!");
    }
}

通过定义一个私有访问权限的构造函数,避免被其他类new出来一个对象,而 Emperor自己则可以new出来一个对象,其他类对该类的访问都可以通过getInstance获得同一个对象。
皇帝有了,臣子要出场:

public class Minister {
     public static void main(String[] args){
         for(int day = 0; day <3; day++){
             Emperor emperor = Emperor.getInstance();
             emperor.say();
         }
     }
}

臣子参拜换地的运行结果为:

我就是唯一的皇帝!
我就是唯一的皇帝!
我就是唯一的皇帝!

由此可见,三天参加的皇帝是同一个人。这就是单例模式。是不是很简单?

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤奋的凯尔森同学

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值