单例模式(皇后和皇上的故事)

0x00 前言

朕虽花心,却深明事理。一山不容二虎,一国不容二母!因此不论朕有多少爱妃(我是逗逼啊,怎么可能还有爱妃,一个皇后就够了!),但是朕的皇后只有一个,这点毋庸置疑。

那么如何来体现朕的皇后的唯一性呢?就是单例模式了!

0x01 宫女请安

在朕的后宫中,皇后当之无愧的是天下第一(朕只能当第二),为了彰显皇后在后宫的地位,每日早晨,宫女必须向皇后娘娘请安。

一大群宫女每天都要来向皇后请安,皇后每天也要接见这群小妹妹们。由于皇后的唯一性,众妹妹在请安的时候都会大呼“皇后娘娘千岁!”,注意,大家称呼的是皇后娘娘,而不是张皇后、李皇后什么的。天天向一个皇后请安,也就不会把自己弄迷糊了。这点在设计领域中就要求,一个类只能生成一个对象。

那么怎么来实现呢?对象的产生是通过new关键字完成的(这是主要方式),这个怎么来控制呢?构造函数!在使用new关键字创建对象的时候,都会根据输入参数调用相应的构造函数,如果我们把皇后的构造函数设置成private私有访问权限是不是就可以禁止外部创建对象了?

下图就是宫女向唯一的皇后请安的过程。
例子
只有两个类:Queen代表皇后,Maid代表宫女。

public class Queen {
    private static final Queen queen = new Queen();
    private Queen() {

    }
    public static Queen getInstance() {
        return queen;
    }

    public static void say() {
        System.out.println("本宫是yyj,尔等跪安吧~");
    }
}
public class Maid {
    public static void main(String[] args) {
        for(int i = 1 ; i < 4; i++) {
            Queen queen = Queen.getInstance();
            System.out.println("今天是第 " + i + " 天请安!");
            queen.say();
        }
    }
}

运行结果:

今天是第 1 天请安!
本宫是yyj,尔等跪安吧~
今天是第 2 天请安!
本宫是yyj,尔等跪安吧~
今天是第 3 天请安!
本宫是yyj,尔等跪安吧~

宫女每天向皇后请安,每天抬头一看,呦,老熟人了,还是昨天那个皇后,这就是单例模式!

1.概念

单例模式(Singleton Pattern)是一个比较简单的模式,其定义如下:

Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值