在很多方面,我真的很喜欢Fluent接口的概念,但是使用C#的所有现代功能(初始化程序,lambda和命名参数),我发现自己在思考:“值得吗?”,“这是正确的模式吗?采用?”。任何人都可以给我(如果不是被接受的做法),至少是他们自己的经验或决策矩阵,以便何时使用Fluent模式?
结论:
到目前为止的答案有一些好的经验法则:
- 当操作员多于设置员时,流利的接口将提供极大帮助,因为调用从上下文传递中受益更多。
- 流利的接口应该被认为是api之上的一层,而不是唯一的使用方法。
- lambda,初始值设定项和命名参数等现代功能可以配合使用,使流畅的界面更加友好。
这是一个使我觉得不需要的现代功能的示例。以一个(也许很差的例子)Fluent接口为例,该接口允许我创建一个Employee,例如:
Employees.CreateNew().WithFirstName("Peter")
.WithLastName("Gibbons")
.WithManager()
.WithFirstName("Bill")
.WithLastName("Lumbergh")
.WithTitle("Manager")
.WithDepartment("Y2K");
可以很容易地用初始化器编写,例如:
Employees.Add(new Employee()
{
FirstName = "Peter",
LastName = "Gibbons",
Manager = new Employee()
{
FirstName = "Bill",
LastName = "Lumbergh",
Title = "Manager",
Department = "Y2K"
}
});
在本示例中,我还可以在构造函数中使用命名参数。