实用模式:内部域特定语言
2010-09-30 22:42:30 来源:WEB开发网在内部,HtmlTag 对象仅从对 Text 和 AddClass 的调用返回其自身:
public HtmlTag AddClass(string className)
{
if (!_cssClasses.Contains(className))
{
_cssClasses.Add(className);
}
return this;
}
public HtmlTag Text(string text)
{
_innerText = text;
return this;
}
如果遇到更复杂的情况,您可以将 Fluent 界面分为两部分:提供运行时行为的语义模型(稍后会更多涉及此模式)和一系列实现 DSL 语法的“Expression Builder”类。
在 StoryTeller 用户界面中,我使用此模式的一个示例来定义键盘快捷方式和动态菜单。针对用户界面中的操作,我需要以一种快速的编程方式为其定义键盘快捷方式。此外,由于大多数人都记不住我们使用的每个应用程序的所有键盘快捷方式,所以我想在 UI 中创建一个单独的菜单,用于显示所有可用的快捷方式和键盘组合。而且,由于 StoryTeller UI 的主选项卡区域中的屏幕已激活,我还想将特定于活动屏幕的动态菜单条形按钮添加到 UI 中。
我当然可以通过惯用的 Windows Presentation Foundation (WPF) 方式编写上述内容的代码,但这将意味着要对键盘动作、命令、每个屏幕的菜单条对象以及菜单项编辑多种不同区域的 XAML 标记,然后还要确保这些项全部正确地联系在一起。所以,我希望尽可能以声明性方式注册新的快捷方式和菜单项,并将代码集中到一点。毫无疑问,我构建了一个 Fluent 界面,并在后台配置了所有完全不同的 WPF 对象。
在使用时,我可以通过以下代码指定一个全局的快捷方式来打开“Execution Queue”屏幕:
更多精彩
赞助商链接