00:00
通过前面的学习,我们知道,如果我们要定一个,那么就需要。我们定一个类,让这个类实现so的接口。而策略接口里边存在有五个方法,我们真正关心的方法是service方法,另外四个方法我们并不是很关心,所以我们每一次都要实现这五个方法。每一次都要。我们空实现另外四个方法。所谓空实现,就是不给它添加其他的。方法体仅仅放个画括号。这这这是不是有点麻烦呢?所以我们就想了,能不能我们定义一个一般性的solid。让这个solve。实现接口,让这个solid。
01:00
去实现另外四个方法怎么实现空实现。然后呢,让我们的。这个一般性的。唯独留下来一个service方法。不用去实现。以后我们再定义。只需要。继承自我们这个一般性的。就可以了。当然了,你service方法啊,一般性的service,你没有实现service方法,这个service必须是抽象类对吧。那么这个一般性的ET,我们就给它起个名叫gene。一般的呀,是吧,这样咱们来写程序。我们来看,我们这样定一个定一个。先电影项目吧,啊顶南,我们不在原有的项目基础上改了,啊电一个项目,这叫零七。
02:07
我们叫。好,我给这定一个class。这我就叫jana Rick,然后呢,Com点北京。Paranoid点。So,我们这样啊,我们。电影这个类是一个抽象类。定义成抽象类。
03:01
这样先不定义抽象类了,免得麻烦定义成抽象类啊,这有点麻烦,呃,实际上我们操作起来。比较麻烦一些,这样咱们直接定一个普通类,我们再给他改。大家看这是一个普通类啊,它实现了接口,当然也就实现了接口里面这个方法。那这五个方法里边这个我不管它了啊,这都是空实线。其中这个方法service方法我们不实现。当然不实现,你就得给它定义成是不是抽象方法呀,Abstract。一旦这个方法定义成抽象方法了,就意味着这个类需要是抽象类。
04:04
这是个抽象类,因为抽象方法只能出现在抽象类里边,而抽象类中可以不包含抽象方法,诶,给大家加上啊,这个是抽象方法。专门让子类。来实现。OK,这样的话,我这个一般性的就定义好了。定义好以后呢。我再定义solid。我来一个,我就不需要。去。去实现so接口了,而是继承自gene。继承子JA Rick啊,我们自己定的这个是吧,OK。
05:07
你看。这样的话,我们这里边是不是只有一个service方法需要我们去实现的,这也正是我们想要的。这也正是我们想要的。我们就想。去实现它,这就OK了。那么大家注意我们这时候定义的这个。他把另外四个方法给你空实现了,这叫空实现啊。单独留下来,他没有实现,让子类来实现,这是一种设计模式。叫什么设计模式?叫做。适配器。适诶,适配器设计模式。
06:05
当然了,适配器设计模式啊,嗯,它是比较复杂一些的,这个呢,属于缺省适配器设计模式。缺。上。适配器设计模式就是比较简单的一种,什么叫缺省设计?呃,缺省适配器设计模式啊,就是让一个类去实现一个接口。但是是空实现。那么实现这个接口里边的大多数方法。个别方法不实现,然后让其他让它的子类来实现那些个别方法,这种叫缺省适配器设计模式,好,那这样的话我们说出一句话。
07:00
这是执行some的。啊,这样。Service,方法好。跑一下吧。你忘了?我们是不是没注册呀。对不对,不注册肯定不行,要不你怎么访问呢。删掉格式化代码。So。So name。我们就叫some。So。
08:00
Solid class。拷贝全名。12L pattern感性好。我们这个就搞定了啊,现在就可以访问了,当然了。我们现在需要重启服务器。Your pattern,我写了什么?杠芯怎么能写杠芯呢,上啊。那杠三不能写杠星啊,杠星呢,你什么都。都要拦截了是吧。
09:01
咱不是讲过U2派了吗?三走。没问题吧,是不是这就OK了?这就OK了。那以后我们再定义solve。只需要继承自就OK了。好,那下面咱们这样吧。下面我们。我们说过啊,我们说过这个。这个这个config呀,很重要。为什么呢?因为config。是不是就是指的这个东西啊。就是sorry,它的注册确切的说其实是这它的注册信息,这里边是不是可以放in输入参数。那。
10:01
我想获取到s conflict,获取到它以后,这里边很重要的一些参数啊,一些对象啊,就能获取到了,那怎么获取呢。怎么获取呢?那样,或许我们大家知道。肯定在这儿呢。是不是在这边,是不是接收啊。那么这个盈利的方法是我们的。谁是我们的?嗯,他们开的服务器。在调用的时候会自动调用引力的方法。会自动调用它啊,所以自动调用的时候会将solid config。是他这儿。把这个东西已经抽象成一个对象了,把这个对象作为食参传递给这个conflict行参,我们在这儿只需要接收conflictfig就行了,这个我们讲过了是吧?那我这边就写了this.con f con。
11:08
OK。那这样的话,我这边这个config就可以给他是返回了。对不对,诶。我这比刚才的叫是不是功能又增强了。那有同学说了,那你这边有了这个成员变量config,那这边怎么用呢。很简单的,你不要忘记,这还有个get subject conflict方法呢。是不是它有一个get con,所以我们在这儿要想获取这个conflict怎么样?我们直接get。我给他。输出一下。
12:04
好,那我们看一下能不能输出啊。我直接刷新走。没问题吧,是不是。这就OK了,这就OK了,那我们继续啊继续。进去干嘛呢?呃,这里边儿,既然我们把它做成一个一般性的。我们再定义soet都是要继承这个一般性的,那我能不能把它做的功能更强大一些,怎么个强大法?
13:00
你比如说我这里边儿。再给大家定一个触发参数in。Panel name。啊,这个,呃,比如这个科。A p value。北京。How no。这是个除法参数,我要想获取它,那怎么获取?那有同学说获取好说呀,我给这只需要这不这儿获取到subject con了吗?是吧,我给他抽取变量。Car pig。Solid config是吧?Solid config,这不是这我就不输出了啊,这个不输出了,然后solid config点。
14:04
Get init parameter哪个呀,是吧,公司吗?我获取到我输出一下。这个PM的值。这行不行,当然可以。重启一下。没问题吧,当然可以,不过这个东西有点麻烦了,我还得获取到这个solid config,获取到它以后再获取数上参数,并且我们这时候啊,你像像这样啊,我仅仅是有一个,如果要有多个呢。是吧,那我们知道前面在学习的时候,知道我们可以获取什么。
15:04
是吧,Parameter。可以获取parameter names一点get。In permit names是吧?啊,我还可以get solid contest get solid name,这些都是很重要的信息,那我能不能这样的,我我要获取这些信息的时候,我都得先获取,我能不能直接。我直接让。这个。让他。实现config接口。我让它实现s con接口,这样的话。就有个好处。什么好处?我实现这个接口,我是不是就要实现这个接口里边所有的方法。
16:02
如果实现了conflict接口就意味着什么,Sum就获取了,就就就就就实现了那个接口了。我就可以实现那个接口就意味着什么,我这里边的方法就可以直接用了,哪一方法可以直接用get perter get parater names get thirty test get name这四个方法就能直接用了。哦,这样的话改继续。继续。啊,继续咱们这样啊。我给大家把这代码留下来。我不在这个基础上改了。零八。二。
17:12
好,大家看我怎么改。我是这样改的。直接给这接口solve conflict。我实现这个接口就意味着什么,我要实现这个接口里边所有的方法。哪些方法?哎,为什么他不错呀。但是因为这里边儿包含有一个subject config,作为什么作为参数了啊,它作为参数出现了。所以他俩不会报错,那需要我们自己写,它里边不就是四个方法吗?对不对,那四个方我们来写。
18:00
一个是。一。Neat perter。Get in perter一个吧,Get init per names2个吧。Get contest3个吧,Get。Name。不就这四个方法怎么实现,很简单的,你这实际上是有这个subject对象的,你就直接给他调用就行了,怎么写。怎么写?那就是con.get need parameter name OK了,一个实现很简单的这个点,Get就它。
19:07
点get some contest。They get solid name。OK。这就OK了。实际上我们这样写的目的是啥?就是你看看现在这个so,这个gene是不是实现了。这个接口啊,也就是说他现在是不是实现了这样的四个方法,那我的some。是不是继承子这gene,也就意味着这个sum里边是不是就具有了这样的四个方法,我再用的话,直接怎么用就行了。就不需要这样了。就不需要这样了,怎么做?你就直接你想获取什么,Get init parameter。
20:05
科。你看。这是不是比刚才的就看的要。简单一些了。是不是直接就调用getter了。再获取一个。This get solid。你看都是this点就获取到了。跑一下。Sun。
21:03
你看三没问题吧,这不这个也没问题吗?数二参数这就OK了。这样的话,我们这个啊。功能相对就比较完善了。这个一般性的。
我来说两句