WEB开发网
开发学院软件开发C语言 实用模式:内部域特定语言 阅读

实用模式:内部域特定语言

 2010-09-30 22:42:30 来源:WEB开发网   
核心提示: 随着时间的推移,区分 DSL 表达式和语义模型会变得非常有用,实用模式:内部域特定语言(5),您将不得不频繁使用 DSL 语法进行某种程度的迭代,以便根据使用情况的反馈获得可读性和可写性更高的表达式,最简单同时可能也是最常用的技巧就是,使对象只从方法调用返回(这大部分也是 jQuery 的工作原

随着时间的推移,区分 DSL 表达式和语义模型会变得非常有用。您将不得不频繁使用 DSL 语法进行某种程度的迭代,以便根据使用情况的反馈获得可读性和可写性更高的表达式。如果在更改语法时不必过多担心会破坏运行时功能,则该迭代会更加顺利。

另一方面,在将 DSL 作为 StructureMap 的正式 API 后,有时我能够在不破坏 DSL 语法的情况下扩展或重新组织内部语义模型。这只是在软件设计中使用“关注点分离”原理具有的优势的另一个示例。

Fluent 界面和表达式生成器

Fluent 界面是 API 的一种样式,它使用方法链接创建简洁、易读的语法。就此问题最有名的例子,我认为可能是日益普遍的面向 JavaScript 开发的 jQuery 库。jQuery 用户可以迅速识别代码,如以下代码:

var link = $(‘<a></a>’).attr("href", "#").appendTo(binDomElement); 
$(‘<span></span>’).html(binName).appendTo(link);

通过 Fluent 界面,可将代码“密化”到小型的文本窗口中,提高代码的可读性。此外,它还经常帮助我指导 API 用户作出正确的选择。制作 Fluent 界面时,最简单同时可能也是最常用的技巧就是,使对象只从方法调用返回(这大部分也是 jQuery 的工作原理)。

我将在 StoryTeller 中用于生成 HTML 的简单类命名为“HtmlTag”。我可以使用以下方法链接快速构建 HtmlTag 对象:

var tag = new HtmlTag("div").Text("my text").AddClass("collapsible");

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:实用 模式 内部

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接