00:00
来下面呢,我们就来写一下这个单位设计模式,这个单位设计模式呢,还是需要大家掌握的,有可能在这个笔试当中呢,让你去手写。这块我再去新建一个包。嗯,这个单利的话呢,用这个英文它叫single town,这就是单利的意思,那我这呢,就不放也叫single town了,我这关于它的一个测试,测试一。为啥写一呢?因为单立设计模式呢,它有两种写法,行这呢我们写的叫单立设计模式,好,单立模,单立设计模式首先呢,我们说一下什么叫单立设计模式,刚才已经说过了,说呢,我们这个某个类只能存在一个实例,我是这样说吧,嗯,单利设计模式就是采用一定的方法,保证在整个软件系统当中,对某个类类类来讲只能存在一个实例。
01:01
哎,这也可以看成是一个定义吧,就是何为单立设计模式,然后接下来我们看如何实现,这是一个问题,第二个如何啊实现,其实我们刚才呢,看到的下面这段文字呢,就是在解释说明如何实现好,我们现在呢,创建一个类,这个类呢,比如说我叫一个银行,叫个银行,我希望呢,创建这个银行类是一个单立的。就是这个银行这个类它是个单利的,言外之呢,就是这个银行类呢,只造一个对象,刚才我们也看了一下这个过程了,那要想保证这个事儿的实施,我们得有如下的一些步骤,首先第一步要求私有化类的构造器,那这呢我就需要声明一个叫private了,我这呢写一个叫bank,哎将我们这个构造器呢私有化了,这里边呢,我们关于bank这个类,我没有去提供一些属性,你要有属性的话呢,该初始化呢,在这你还去声明这个行三去初始化,这呢咱们就把这个最核心的只是说单列这个事儿呢抽出来了。
02:15
嗯,我这就没有给他额外的再去提供这个属性的问题了啊,就忽略掉这个事儿,将我们这个构造器私有化的目的是什么呀?是不是就是为了避免在我们这个bank类的外面去调核到漆,对的,你像我这要是原来呢,你要是没有这个把这个私有化的话,哪怕你现在是一个default权限,我们都可以在外边呢去造多个对象。这呢,我就造了一个,我再来一个。这显然呢,我就造了两个对象,那这时候呢,你的bug肯定不是单立了,所以呢,我们一上来呢,必须呢,先给它构造器,私有化这个事儿呢,不让他从外边呢,直接去造对象。那外边不让造了,你还想让他有一个对象,那你只能是在里边造了,所以我们第二步,那第二步呢,就是内部创建这个类的对象,内部创建类的对象,咱们而且讲了这个封装性呢,习惯上呢,也给它私有化一会儿呢,咱们通过这个方法呢,去调一下,它生明一个叫private的,我叫一个bank了,我叫一个instance吧,一个实例,我呢直接在里边呢就造好了。
03:33
真人就造好了,这个对象呢,其实也可以理解为就是我们这个类的一个属性了,这个属性其实就是恰好就是它这个对象行,那么我们这个对象造好了,造好以后的话呢,我们在另外的这个类当中,你不是说不让我造对象了吗?可以,那我现在呢,我得用你这个对象,那你说我们现在呢,想在这用。是不是private也用不了啊,所以呢,你首先考虑那得提供一个方法,这第三个点就是提供公共的这个方法,然后呢,这个调用或者叫返回我们类的对象行公共方法public返回呢是一个bank,我呢叫get instance吧,获取一个实例,在这里边呢,我就return了一下你这个实例instance。
04:23
其实就相当于我们这个属性的一个改方法,行,你提了一个方法,让我呢直接在这去掉,那现在看了我这怎么调啊,好像有点困难,你这个方法呢,是一个非静态的,我要想调的话呢,我得先创建你这个类的一个对象,创建了对象呢,我就能调这方法,你就能给我返回一个对象,但是我现在呢,得先创建个对象,创建对象呢,我需要调你个方法才能拿到这个对象,拿到这个方法的话呢,我得先创建一个对象,死循环出不来了。能理解这个事儿是吧,那这时候呢,我们必须把这个方法呢,声明是一个static了,静态方法,此时的话呢,我们就可以通过咱们当前这个类呢去掉了,但是呢,我们刚一静态化,你会发现诶报错了,是因为呢,我们静态的方法中只能调静态的结构。
05:22
你此时呢,你这个属性是一个非静态的言YG呢,就是有了对象你才能够这个在堆空间中加载它了,那静态里边不能调非静态的,那自然而然的,我们这个创建的对象也得是一个代立啊,这呢就是我们说的这几步稍微完善一下,这个第三步提供公共的静态的方法返回类的对象,然后呢,这个加完以后我们回来,这个第四步也得补充一下,说要求此属性或者叫词对象也必须。声明为静态的,诶这呢就是我们单立设计模式,就这样四步,那有了以后我们在这个位置直接呢,我通过这个bank呢去调get incense返回的呢,就是一个bank,我这比如我写成BANK1,那我要是再去调一下get incense返回一个半二的变量,那问这两个是同一个对象,是是不是就是你唯一new的这个对象了,那那你要是是一个同一个对象,就意味着我要是拿半一去用等等去判断的话呢,它们俩的地址值就应该是一样的,我们看一下啊,确实是个处。
06:38
那这时候呢,我们这个对象呢,就是唯一的一个叫单利,叫做单利,那单利设计模式呢,我们这就写好其中的一种了,把这种设计模式呢,我们称作叫恶汉式,注意是饥饿的饿,不是那个凶恶的恶,比较恶的意思,不是比较坏的意思,哎,这叫饿汉式,好,除了饿汉式之外呢,还有另外一种方式,咱们先把这个停一下。
我来说两句