这个来说,相对简单一点,就是要求定义的这个角色是独一无二的。
还是拿电影来说吧,一部电影可能有多个摄像、场记、演员。但是,导演只会有一个。那么这个导演就是单例的。
下面来看我们怎么让这个导演是独一无二的。
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;
}
}
还是拿电影来说吧,一部电影可能有多个摄像、场记、演员。但是,导演只会有一个。那么这个导演就是单例的。
下面来看我们怎么让这个导演是独一无二的。
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;
}
}