状态

设计模式之行为型模式

Deadly 提交于 2019-12-17 19:19:58
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我们在前面已讨论了12种设计模式。其中涉及的是:变与不变,对变化如何处理,以及调用关系,对不可调用,如何方便实现成为可以调用。剩下的11个模式,都是与行为传递有关的,即不是变与不变的问题,也不是调用关系问题。而是调用流程控制的问题。这是因为,我们使用了类,使用了SOLID原则,调用流程不再是if else 或 switch case。 处理好这样的流程控制,则更易于我们的代码的简化。 Chain of Responsibility(责任链) :为解除请求的发送者和接受者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。 这样的做法,使得每一个类中的流程控制得以统一。并且,可以将这样的流程控制封装到对应的类中,而不是由调用者来处理,因而调用者不再需要了解这个链中有多少个程员,该按怎样的顺序调用。从而丢开了调用者与被调用者之间的紧密耦合。 实现方式:被调用者作为具体代码,其类中增加$next属性,保存下一个有责任的类。被调的方法中,判断,有没有$next,如果有,则调用$next中的同名方法。 总结:一次性同时调用多个类中的同一个方法。(类方法递归) 选择模式:通过类的链,实现方法选择的组合。 Command(命令) :将一个请求封装为一个对象

atom分析-项目目录中的git状态显示

被刻印的时光 ゝ 提交于 2019-12-10 13:56:43
最近都在用atom来代替了sublime text来写代码,github强大的开源插件让这个编辑器变得非常的强大而且有个性化,推荐前端开发的朋友都去尝试使用,为什么不是都建议使用呢?因为atom占用的内存比sublime text确实大了很多很多,目前还出现过崩溃的情况。 这次不是讨论atom的好坏,而是发现了一个问题,atom不能显示git项目的分支。 用atom的朋友应该都都知道,atom打开了git项目(不需要是github),打开项目的其中一个文件,那么在atom的右下角位置都会显示你项目当前的分支,显示修改了多少行,删除了多少行这样的状态,如下图 但是发现有时候,打开了git项目却没有像上面那样的显示,让我一度怀疑自己的atom已经坏了...... 经过试验发现,atom没有我想象中的那么智能吧,这种情况下添加项目文件是没有的 而这样添加项目文件却能够正确显示了,如下 观察可以看出来,这两者的区别在于第一种情况是git项目在添加项目目录的时候是二级目录,而第二种情况则是一级目录,那就是说atom只能识别项目的一级目录? 这个时候应该确认一下atom是如果读取git项目的,那么需要打开atom的调试器(windows下的快捷键是alt+ctrl+i),atom编辑器调试的对象是atom,那么分析它读取的项目是atom.project,往下查看发现有一个读取项目的仓库方法

【讲古堂】状态机(二)

那年仲夏 提交于 2019-12-04 22:05:41
状态机 状态机的概念是来自硬件的。描述一系列状态转换的电路叫状态机。主要用来实现一个数字系统设计中的控制部分。运行模式类似于CPU,但和CPU相比,具有结构简单、易读易懂等特点。 对于无限个状态(无限状态机,Infinite State Machine,ISM)是难以检证的,所以这里所说的状态机通常是指有限状态机或有穷状态机,即Finite State Machine,FSM。 状态模式可以允许客户端改变状态的转换行为,而状态机则是能够自动改变状态,状态机是一个比较独立的而且复杂的机制。 状态机看上去就像是一个有向图,其中状态是图的节点,而状态转换则是图的边。 此外这些状态中还必须有一个初始状态和至少一个接受状态。 但是由于一些原因并不会执行初始化(initialization),而是直接通过一个节点进入状态是允许的,则此节点称之为进入节点(Entry Point)。 进入终了状态的节点称为退出节点(Exit Point) 转移(Transitions)是两个状态之间的一种关系,表示对象将在源状态(Source State)中,因为预先定义的触发器的发生导致警界条件满足时进入目标状态(Target State)。 触发器(Trigger):是转移的诱因,可以是一个信号,事件、条件变化(a change in some condition)和时间表达式。 警界条件(Guard

【讲古堂】状态机(一)

浪尽此生 提交于 2019-12-04 22:05:24
状态(State) 状态,指在对象的生命周期中的某个条件下的状况,在此期间对象将满足某些条件、执行某些活动活活等待某些事件。 所有对象都有状态,状态是对象执行了一系列活动的结果,当某个事件发生后,对象的状态将发生变化。 在不同状态下,同一对象表现出的行为也是不同的。 一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的对象,这样的对象状态是从事先定义好的一系列值中取出的。 当一个这样的对象与外部事件产生互动时,其内部状态就会改变,从而使得系统的行为也随之发生变化。 行为(Action) 行为指的就是对象的功能,大多行为是有对应的方法或者处理的。 行为的平行性和平等性 平行性指的是各个状态下的行为所处的层次是一样的,相互独立的、没有关联的,是根据不同的状态来决定到底走平行线的哪一条。 行为是不同的,当然对应的实现也是不同的,相互之间是不可替换的。 平等性强调的是可替换性,分别是同一行为的不同描述或实现,因此在同一个行为发生的时候,可以根据条件挑选任意一个实现来进行相应的处理。 如果行为是平行性的,则不可相互替换的;如果行为是平等性的,则是可以相互替换的。 状态决定行为 状态之间可以转换 状态之间的变换由外界控制 来源: oschina 链接: https://my.oschina.net/u/660460/blog/652365