00:00
面我们就直接上代码来说一下本地完成本地糖果机的一个监控,我们会怎么写,然后把它。改成这个叫做远程监控或者远程代理,那么对本地糖果机的状态和销售情况,呃,控制呢比较简单,那么完成情况可以这样写,这是我写的一堆代码啊,这个代码肯定显得我们不会再一步步敲了,光这个代码敲下来没有一个小时敲不完怎么办呢?我就直接把这个代码准备好了,叫local candy machine这么一段代码啊,同学们,我把这个拿过来看一下啊。那么我会把这个思路给他讲清楚,大家注意听讲就行了。好,这个地方呢,我直接写一个新的某事,叫proxy。走一个吧,建个包包。Proxy代理,然后呢,我把刚才本地糖果机监控的这么一个项目给大家拿到我们笔记中去。三项好啊啊,Location of option下面,因为我这没有啊,这样看也行啊,要看,因为我下面只有这一个,一个包就location condition,那么看到这里面有很多的代码的代码看起来肯定。
01:16
头都大了啊,我简单说一下是干什么的?首先我们来一个一个的看,首先我们来一个看,先看这个STEM状态。就是因为你监控的是糖果机的状态嘛,那肯定你你得设计一些状态,比如销售完毕啊,正在销售啊,已插入这个硬币啊等等等等,那么这个是状态,第这个先把这个状态走完,我们看我这定了好几个状态啊,有插入硬币的状态。返回硬币状态,转动取柄输出状态,还有得到这个状态名称,还有分配状态,什么叫分配状态呢?就是比如说我们卖出去一块糖过后,我们出了一块糖给这个用户,那么就看看当前糖果机应该进入哪个状态,比如说卖完了我们发现什么呢?已经一颗糖都没有了,我们就进入一个销售完毕的,或者销售销售呃售罄的这么一种状态。
02:13
好,这是,那么这个状态有几种呢?我设计了一下啊,大家看这个是汉字空,就是有相对汉空就是就是有人给你加了一块硬币进去。啊,下面这个代码大家看一下大体的意思啊,我实现了一系列方法,比如说get状态,名字就是硬币,这个我写啊就是是有现在是相当于说用户插入了啊,加入了啊插入插入了一块啊一块硬币,一枚一块硬币。硬币啊。硬币的状态。啊状态,那么下面呢,呃,状态的时候,大家看我这儿有一个糖果机,也就是说我们是怎么设计的呢?我不是把一个状态塞塞给一个糖果机,而是把这个把这个糖果机扔给这个状态,这样子我管理起来方便,因为状态几几种啊,糖果机很多嘛。
03:10
啊,所以说我是一对多的方式,有点类似于把多的这个东西直接扔到了我的这个,呃,这个状态里面去,就是将来我想去监控某一台这个我我想去看这个某一台糖果机是不是有这个状态,直接把它放进来就行了啊这个是监,相当于说看这个状态和什么呢?就是观察,观察的是这个糖果肌。那个呢,I candy弹过琴。糖果机的状态A,糖果机的状态好,下面就不说了,返回状态说,诶是有硬币了,然后是insert的,Insert就是A,如果你现在注意听啊,如果你现在已经是。有插入了一块硬盘,那么你如果再想插入硬盘,我就告诉你you can insert another in,就是你现在已经有有有有这个硬币了吗?我不让你再发,下面是print打印状态,还有一个返回硬币,比如说这个人他干什么呢?他。
04:09
他这个放了一块硬币过后,他突然想,诶,我不想吃这个糖了,他就按了一下那个一个按钮,就是出硬币,把硬币又退出来了,那么这个就叫硬币退出,退出过后呢,我要重新给他设置状态,变成什么状态呢?变成一个准备状态。那这些代码你们可以不用理理会啊,就是我简单,因为代码事迹你们不用去管,你们主要是听这个流程。这个叫什么呢?这个叫按曲柄,转动这个曲柄手柄啊,转动手柄。转动手柄,我是干了件什么事,事情呢?转动这个手柄。就这个摁一下啊,转一下,转一下过后呢,就说诶手柄联动了,然后呢,我先得到一个随机数啊,如果说他返回了一个零,就说明这个人中奖了啊,中奖了,中奖干什么呢?我就给他,呃,给他分配一再再给他一块糖啊鬼他块糖,否则呢,我就不再给糖了,就这意思,然后这个呃,第三呢,这个目前他没有没有逻辑就空到这了,好,其他我就不一个讲了啊,像这个准备状态,准备状态还有一个销售完毕的状态,就是现在没有没有糖了,一颗糖都没有了,大家看大致就这么意思,然后这个时候呢,这个是正在销售中啊,处于销售的状态,这个是处于处于销售的状态。
05:31
什么叫销售呢?就正正在出唐。你可以理解成正正那个糖正在往外出呢啊,正在可以正在出堂。正在啊,正在这个出出糖果,给你出糖果,哎,就这么意思。好,再说一遍啊,具体的代码你们都可以不用换,只是待会观察我们关心的,你看这就有了,这地方我出了糖果过后,你看我就我就判判断一下,先减一个,减完过后看看这个数量大不大于零,如果大于零说明还有糖,还有糖呢,就可以再再卖,如果发现诶一颗糖都没有了,不大零,我就进入到一个什么状态呢?呃,瘦的out的状态啊,这个大家知道就行了。
06:15
好,这个就状态这块就写做完了。状态说完以后呢,我们这还有个温状态就不说了,就是中中还有一个最关键是monitor,这是我们的关键点。这个是我们监控器,这个是我们的监控,监控这个糖果机的一个类。那这面写了什么东西呢?看哎,咱们看有点意思,你看我这就充分利用了一个buffer,我这一个监控机呢,可以监控本地的多台机器。啊,监控多台。多肽,哎,多肽。多彩糖果机。糖果机。那我用我怎么实现监控多台糖果机呢?我用那个list buffer跟刚才那个观测的模式很像,但是不不完全相同啊,不完全相同,这个就是加,加机器进去,加完机器过后呢,加一个就扔进去,最后这有个出报告的方法,就是我想知道我现在监控的三台或者五台糖果机是个什么状态呢?我就便利的把它信息打出来,比如说get地址,得到他现在有还有几还有几颗糖,它的状态名称好,这个是打印。
07:25
或者输出输出当前输出什么呢?该该监控器该监控。监控器啊,管理的管理的各个糖果机,糖果机的信息好写完了写完了啊同学们,这就是一个写完的状态,那么现在呢,我们来看看怎么玩。啊啊,怎么玩现在呢,我这写了一段代码,大家看一下就可以了,也很简单啊,我这里创建了一个监控器。他创建了一个兼。
08:00
监控器,然后呢,我我这里有一台糖果机是北京海淀的,那我肯定要把这个代码写好啊,我帮你写这个代码,确实没时间写了,这个是海北京海淀的一一个糖果机有几颗,有几颗糖呢?这个有有六颗糖。啊,糖果鸡目前有六颗,有六颗糖。六科。六这个课六课堂。好六个团过后呢,我把它加进去了,诶我我我我的那个什么,我那个监控,你把它加进去,准备准备监控你了啊,准备监控你,你有什么变化我就能拿到,因为我是立志的管理嘛,加加入到了啊将该糖果机。将糖果鸡加入。啊,加入到我们监控器。监控器好,监控好,监控器可以了,其他以此类推,这一个北京昌平有本地有一个糖果机,有四颗糖,好北京朝阳,北京朝阳呢,呃,这边有也也有一个糖果鸡,有14颗糖,也把它加进去,但是呢,我故意修改了一下糖的状态。
09:14
我故意修改,注意啊,这个状态你可以加入过,在一边也是一样的,说老师我把这个代码写到屁股后边可不可以,可以啊可以,因为写到这儿也是一样的啊,因为我这个是引用啊,我在这写还在那写都可以,只是我提前写了,相当于是干什么呢?相当于北京朝阳这个呢,我故意修改了一下他的状态。这里我故意改了一下状态啊,这里故意啊,故意修改了,修改了北京朝阳这个糖果机的状态,看看能不能监控到。我修改成什么状态的呢?哎,我修改成它插入一个硬币,并转动了曲柄出膛。好,最后整个打出报告,他应该会打出三个三台糖果机的状态。
10:01
啊,就是说输出输出监控器,监控器管理的,管理的所有糖果机的糖果机的这个情况。对吧,很简单,那同学们想第一个的状态应该是。On的状态,因为第二个状态,你看我这插入一个硬币,第二个呢,应该是插入硬币的状态,就是这这个状态,还是还是这个corn这个状态,而下面这个呢,这个呃,Turn qua就是扭动取名,它出了糖,出了糖过后呢,它这个14颗糖应该变成了13颗糖,就是我监控各个机器,就这意思。代码很简单啊,同学们我跑一下跑,我们看这个结果跟我们想的是不一样的。好,这里面有段代码是刚才做测试的时候遗留的代码,我就写到这里来,打开我们这个糖果机的监控,再跑一下,同学们请看。好的。当我们运行完毕过后呢,我们可以看到现在它输出了三台糖果机的情况。第一块。
11:06
啊,第一块啊,等等等信息啊,北京海淀有六颗糖。六档,因为你干什么呢,你你现在呃是没有加加的,所以它是属于一个unre的状态。北京昌平呢,现在还有四个堂,为什么呢?因为你。你现在属于这个有有有硬币的状态,但是你你没有转那个曲柄,所以说状态是有硬币,但是糖还没出来,还有一个是北京朝阳的这么一台机器干什么呢?它属于一个unredi,而且呢,它变成了13颗,为什么?因为。他卖出去了一颗啊,大家看代码很简单啊,这个就是我们本地监控的一个简单代码,其实我用了一个什么呢?就这个,这个时候还没涉及到代理,同学们现在这个还没有涉及到代理,现在还没有涉及到代理,这只是一个本地监控的一个解决方法。
12:00
同学们,以后呢,可以按照这个流程来设计,不要小看这个代码啊,你将来跟别人聊的时候,这些东西是能够给你干什么呢,增加工资的。啊,人家公司的,因为同学们能考察出来这个程序员有没有思想,怎么体现出编程思想,说这个人有编程思想,那个人没有编程思想,呃,当然第一个是代码能力,有程代码写的很熟,但是你看刚才人家写这个。那个就是我们讲的那个咖啡那个案例说如果你没有编程思想,你可能就傻乎乎的就就那么设计了,等到别人接受你的项目的时候,基本上就已经彻底完蛋了。但是如果你用的是装饰者模式,别人一看这个小伙子水平那就是不一样,那就是不一样,为什么?你看人家写这个代码结构是吧,我加一个东西很轻松,肯定水平就不一样了,那工资肯定就不一样了。那现在我们这呢,还没有涉及到代理,我只是写了一个本地监控的一个解决方案,大家应该还是能够看懂的,好那这个地方讲这个玩意儿最主要目的是要引出我们远程监控糖果机的这个远程代理的模式,好那完成本地糖果级的案例呢,我们先聊到这儿,大家也大致知道我们这个项目要做什么事情了,截取一段视频。
我来说两句