实用模式:内部域特定语言
2010-09-30 22:42:30 来源:WEB开发网我仍然记得第一次使用 Fluent 界面的情景。当时我正在使用一种系统,该系统作为以电子形式提交具有法律效力的发票的律师事务所及其客户之间的消息代理程序。我们经常使用该程序代表律师事务所将消息发送给客户。要发送消息,我们需要调用以下接口:
public interface IMessageSender
{
void SendMessage(string text, string sender, string receiver);
}
该 API 非常简单;只需传入三个字符串参数并且非常方便。使用时的问题是各个参数的最终传入位置。没错,ReSharper 等工具是可以显示每一次指定的参数,但是当您只是读取代码时,扫描对 SendMessage 的调用会出现什么情况?看看以下代码示例的用法,您就会完全理解我提到颠倒字符串参数的顺序将导致错误的意思了:
// Snippet from a class that uses IMessageSender
public void SendMessage(IMessageSender sender)
{
// Is this right?
sender.SendMessage("the message body", "PARTNER001", "PARTNER002");
// or this?
sender.SendMessage("PARTNER001", "the message body", "PARTNER002");
// or this?
sender.SendMessage("PARTNER001", "PARTNER002", "the message body");
}
当时,我借助 Fluent 界面方法解决了 API 可用性问题,因为该方法可更加明确地指示各个参数的含义:
public void SendMessageFluently(FluentMessageSender sender)
{
sender
.SendText("the message body")
.From("PARTNER001").To("PARTNER002");
}
更多精彩
赞助商链接