00:00
枚举。枚举呢,其实它也可以很轻松的实现我们这一个单例模式的设计,我们来看一段代码。看断代码,这个是一个枚举,是通,当然里面我定义了它的一个啊,Instance的一个属性啊,那么这里面呢,我们也可以提供他的相应的方法,叫method,我们来写一写,就是我们单利模式的第八一种写法。也就是通过枚举的。枚举这种方式来实现单立模式。写一个。啊,那么我们来写一写哈,我新建一个类。新建一个类叫single。然后呢,是我们的第八一个案例。好,呃,怎么写呢?来看一看。首先我们写个枚举single。然后呢,在这里我们就写一写他的。一个属性,Instance。
01:05
可以了,然后呢,这里面我们有方法,Public void,比如说COK。OK,我在这里面说出一句话。我在这边说出一句话,待会儿呢,我们来调一下,看看能不能跑起来。System out。然后呢,写一个OK。好,代码写完,那么怎么来用呢?同学们看。我在这里写一个主方法。做方法,首先我们来验证这个属性。这个属性,因为在这里面,在single to里面,我只有一个这样的属性,就保证它是一个单立。啊,保证它的单力,那么来我们来用用怎么用呢?同学们看,通过新。Single好点。Instance,我们得到一个instance,我们再来获取一个。我们再来获取INSTANCE2,首先我们跟刚才一样,我们先看一看这两个实例,它们是否相等。
02:05
如果它们相等,才能证明它们是同一个对象,对不对,我运行一下。首先我们发现它返回的是true,同样我们把它的哈希code也打印出来,看一下instance。点has code,第一个的第一个,我们再输第二个。Instance。二这个对象实例has code,我们再运行,我们发现呢,没有任何问题,你看。两个哈西code也是相同的,同样通过这一个实例,我们来调查的方法。比如说COK也是可以调的,那这不是有个COK吗?我运行它就会输出OK这这个信息看到没有,所以说我们这个用枚举的方式呢,也是可以实现使用枚举,枚举。可以实现什么呢?单利,而且这个方法呢,还是比较好的,它可以解决我们原先的一些问题,都是可以解决,所以说我们推荐使用。
03:10
那我们来看一下它的特点有哪些,我们来揉揉一揉。借助JDK1.5添加的枚举来实现单例模式,不仅能够避免多线程的问题,而且还能防止反序列化,重新创建新的对象。因为有时候你会用反序列化来创建,这时用枚举就可以防止这个问题,而且这个枚举方式呢,也是effective Java这个作者他提升的方式,所以最后这个结论是推荐使用。就是推荐大家用枚举方式来实现我们的单利。好,那就是现在呢,我们来看一下我们一共讲了多少种啊呃,我们一共讲了有这么八种。八种方式来实现单利对不对,那单利模式,单利模式这个。呃,实现方式一共有八个,我们推荐使用的有哪几个呢?大家来看一看,首先第一个枚举我们推荐使用第二个。
04:08
是不是我们还推荐使用静态内部类来使用,因为它可以实现懒加载,同时呢,它可以保证我们线程的安全,还有一个是什么呀,还有一个就是我们的双重检查也是可以的,另外一个呢,就是推荐。推荐大家使用我们这一个。这个也是可以推荐大家的,哪一个呢,就是二汉式。二汉式呢,就是在我们使用单线程的时候不涉及到。就说不饿二,二汉市是这样子,而二汉市它跟现它本身也是现在安全的,但是饿汉市呢,它有一个问题,就是它有可能造成。这个内存的一个浪费,但它虽然是浪费,但毕竟它没有问题,所以说二汉式也是可以用的。只是你如果你确定我们这个单立模式一定会,那个对象是一定会用一次,那二汉式就没有任何问题,所以说二汉式是可以用的,然后呢,我们刚才讲的双重检查可以用静态累不累。
05:09
静态内部类和枚举也是可以用的,对吧?OK,那关于枚举它的一个使用就先介绍到这里。
我来说两句