我的设计模式--单例模式

这个来说,相对简单一点,就是要求定义的这个角色是独一无二的。

还是拿电影来说吧,一部电影可能有多个摄像、场记、演员。但是,导演只会有一个。那么这个导演就是单例的。

下面来看我们怎么让这个导演是独一无二的。

public class Director
{
//导演的妈妈已经生了一个导演了,所以不能再出现了一个导演了
private Director()
{

}

//这个时刻就是导演出生了
private static Director instance = new Director();

//要让导演出场拍电影了,不能老是待着不干活,制片人会有意见的
public static Director getInstance()
{
return instance;
}
}

是不是感觉很简单呢,当然我们这里做的是懒汉式的单例,直接把导演给出生了,不管这个导演会不会接到制片人或出品人给的单子,让他拍电影。
如果我们想等这个导演接到片子了再出生,那该怎么办呢?这里就要把导演变成一个勤劳的人了。

public class Director
{
//导演的妈妈已经生了一个导演了,所以不能再出现了一个导演了
private Director()
{

}

//这个时刻就是导演出生了
private static Director instance = null;

private Lock lock;

//要让导演出场拍电影了,不能老是待着不干活,制片人会有意见的
public static Director getInstance()
{
//锁住,如果同时两个制片人找导演,那不是出来两个导演了,那这世界不乱套了。所以,关键的地方。
lock.lock();
if (null == instance)
{
instance = new Director();
}
lock.unLock();
//导演生完了,那么就放开他吧,看起来有点邪恶。哈哈
return instance;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值