- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
状状态态机机模模式式
状状态态机机
对于你的状态机,可能有若⼲个状态,每个状态有⾃⼰特定的属性和属于该状态下的⾏为,因此你可以为每个状态定⼀个类,当然这些状
态实现⼀个接⼝State,然后,把这些State作为状态机的实例变量。
适适⽤⽤场场合合::
State模式在实际使⽤中⽐较多,适合状态的切换.因为我们经常会使⽤Ifelseifelse进⾏状态切换,如果针对状态的这样判断切换反复出现,我
们就要联想到是否可以采取State模式了.
特特点点::
·拥有⼀个状态机对象:⽤于代表当前的状态
·拥有⼀个切换到上/下⼀个状态的⽅法:实际上是调⽤了状态机⾃⾝的切换⽅法,由于状态机本⾝已经“知道”⾃⼰是什么状态,所以可以⽅便
的切换到上、下⼀个状态。
有⼀个实例来辅助分析话会更⽅便,这⾥使⽤的实例是:编程找出⽂件中符合正则表达式alpha[alpha|digit]*和digit+的字符串。alpha
就是字母啦:[a-zA-Z];digit就是数字:[0-]。
先画出DFA:
在上图中,状态只有三个(结束状态可以省略):开始状态、单词状态和数字状态。
接下来要⽤两种不同的⽅法来实现这个DFA,第⼀种是传统的whileswitch⼤法,第⼆种是现在流⾏的设计模式中的状态模式。
为了⽅便⽐较,先抽象出⼀个名为Parser的接⼝,它提供了⼀个名为parse的⽅法,传统状态机和状态机模式通过实现这个⽅法来完成对正
则表达式的识别。传统状态机实现的类名叫ClassicalMachine,状态机模式的类名则叫PatternMachine。
publicinterfaceParser{
voidparse()throwsException;
}
ClassicalMachine类的实现⾮常简单,它在parse()⽅法⾥就完成了⼲完了⼀切:
publicclassClassicalMachineimplementsParser{
privateBufferedReadermFin;
privateStringmToken;
publicClassicalMachine(BufferedReaderfin){
mFin=fin;
}
privateenumSTATUS{START,IS_KEYWORD,IS_NUMBER};
STATUSmStatus=STATUS.START;
@Override
publicvoidparse()throwsException{
mToken=;
while(true){
intch=mFin.read();
if(-1==ch)break;
charc=(char)ch;
switch(mStatus){
caseSTART:
if(Character.isLetter(c)){
mToken+=c;
mStatus=STATUS.IS_KEYWORD;
}
elseif(Character.isDigit(c)){
mToken+=c;
mStatus=STATUS.IS_NUMBER;
}
break;
caseIS_KEYWORD:
if(Character.isLetterOrDigit(c)){
mToken+=c;
}
您可能关注的文档
最近下载
- EPDM塑胶面层施工方案:.doc VIP
- 肿瘤化疗药物使用指南和规范.pdf VIP
- 分析沥青混凝土路面病害产生原因及处理的方法.doc VIP
- 2024华医网答案;继续教育答案;复合杂交手术治疗主动脉夹层疾病新理念;题库答案.docx VIP
- 省级优秀课件人音版小学音乐二年级上册《大海》.pptx
- 遇到更好的自己(新员工).pdf
- 超星尔雅学习通《劳动通论》章节测试答案.pdf VIP
- 思想道德与法治2021版第六章第四节.pptx
- 2024年外研版八年级上册英语Module 9 Unit3 Language in use.pptx VIP
- 2024年华医网继续教育肠内肠外营养临床规范化应用答案.docx VIP
文档评论(0)