软件构造 第六章第三节 面向可维护的构造技术

Posted masteryellow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件构造 第六章第三节 面向可维护的构造技术相关的知识,希望对你有一定的参考价值。

第六章第三节 面向可维护的构造技术

基于状态的构造技术

状态模式(State Pattern)

技术分享图片

技术分享图片

备忘录模式(Memento Pattern)

技术分享图片

 

 

Grammar-based construction

  • 使用grammar判断字符串是否合法,并解析成程序里使用的数据结构
  • 正则表达式
  • 通常是递归的数据结构

terminals 终止节点、叶节点

nonterminal 非终止节点(遵循特定规则,利用操作符、终止节点和其他非终止节点,构造新的字符串)

三个基本语法的操作符:

连接,不是通过一个符号,而是一个空间:

x ::= y z //x等价于y后跟一个z

重复,以*表示:  

x ::= y* // x等价于0个或更多个y

联合,也称为交替,如图所示 | :  

x ::= y | z //x等价于一个y或者一个z

三个基本操作符的组合:

可选(0或1次出现),由?表示:

x ::= y? //x等价于一个y或者一个空串

出现1次或多次:以+表示:

x ::= y+ //x等价于一个或者更多个y, 等价于 x ::= y y*

字符类[…],表示长度的字符类,包含方括号中列出的任何字符的1个字符串:

x ::= [abc] //等价于 x ::= ‘a‘ | ‘b‘ | ‘c‘

否定的字符类[^…],表示长度,包含未在括号中列出的任何字符的1个字符串:

x ::= [^abc] //等价于 x ::= ‘d‘ | ‘e‘ | ‘f‘ | ... (all other characters in Unicode)

 

以URL为例构造语法树:

技术分享图片

还可以有递归定义:

技术分享图片

 

技术分享图片

 

正则语法与正则表达式

举例子:

技术分享图片


以上是关于软件构造 第六章第三节 面向可维护的构造技术的主要内容,如果未能解决你的问题,请参考以下文章

软件构造第六章第一节 可维护性的度量与构造原则

软件构造第六章第二节 可维护的设计模式

软件构造第五章第三节 可复用的设计模式

第六章第三节Lua脚本demo

面向对象软件构造 (Bertrand Meyer 著)

软构笔记-9-面向复用的软件构造技术