Ở nhiều khía cạnh, tôi thực sự thích ý tưởng về giao diện Fluent, nhưng với tất cả các tính năng hiện đại của C # (bộ khởi tạo, lambdas, tham số có tên) Tôi thấy mình đang nghĩ, "nó có đáng không?", Và "Đây có phải là mô hình phù hợp không sử dụng?". Bất cứ ai cũng có thể cho tôi, nếu không phải là một thực tiễn được chấp nhận, ít nhất là kinh nghiệm hoặc ma trận quyết định của riêng họ khi nào nên sử dụng mẫu Fluent?
Phần kết luận:
Một số quy tắc tốt từ các câu trả lời cho đến nay:
- Giao diện trôi chảy giúp ích rất nhiều khi bạn có nhiều hành động hơn setters, vì các cuộc gọi được hưởng lợi nhiều hơn từ việc truyền qua ngữ cảnh.
- Giao diện lưu loát nên được coi là một lớp trên đầu của một api, không phải là phương tiện sử dụng duy nhất.
- Các tính năng hiện đại như lambdas, bộ khởi tạo và các tham số được đặt tên, có thể hoạt động cùng nhau để làm cho giao diện trôi chảy thậm chí còn thân thiện hơn.
Dưới đây là một ví dụ về những gì tôi muốn nói bởi các tính năng hiện đại làm cho nó cảm thấy ít cần thiết hơn. Lấy ví dụ một giao diện (có lẽ là kém) cho phép tôi tạo một Nhân viên như:
Employees.CreateNew().WithFirstName("Peter")
.WithLastName("Gibbons")
.WithManager()
.WithFirstName("Bill")
.WithLastName("Lumbergh")
.WithTitle("Manager")
.WithDepartment("Y2K");
Có thể dễ dàng được viết với các trình khởi tạo như:
Employees.Add(new Employee()
{
FirstName = "Peter",
LastName = "Gibbons",
Manager = new Employee()
{
FirstName = "Bill",
LastName = "Lumbergh",
Title = "Manager",
Department = "Y2K"
}
});
Tôi cũng có thể đã sử dụng các tham số được đặt tên trong các hàm tạo trong ví dụ này.