Багато в чому мені дуже подобається ідея інтерфейсів Fluent, але з усіма сучасними особливостями C # (ініціалізатори, лямбдати, названі параметри) я вважаю себе думкою: «чи варто це?» Та «чи це правильна модель? використовувати? ". Чи міг би хто-небудь дати мені, як не прийняту практику, принаймні власний досвід чи матрицю рішення, коли використовувати Fluent шаблон?
Висновок:
Деякі хороші правила з цих відповідей:
- Вільні інтерфейси значно допомагають, коли у вас більше дій, ніж сеттер, оскільки виклики отримують більше користі від контексту проходження.
- Вільні інтерфейси слід розглядати як шар над верхнім верхом, а не єдиним засобом використання.
- Сучасні функції, такі як лямбда, ініціалізатори та названі параметри, можуть працювати поруч, щоб зробити вільний інтерфейс ще більш дружним.
Ось приклад того, що я маю на увазі під сучасними функціями, що роблять його менш потрібним. Візьмемо для прикладу (можливо, поганий приклад) Вільний інтерфейс, який дозволяє мені створити Співробітника на зразок:
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"
}
});
Я міг би також використовувати названі параметри в конструкторах у цьому прикладі.