В данном посте я бы хотел показать, как построить Progressive Fluent Interface в применении к паттерну Fluent Builder.
Применение Fluent Interface с паттерном Builder позволяет создавать выразительное и читабельное API для построения сложных объектов.
Подробнее том что такое Fluent Interface и Fluent Builder можно прочесть в статье Martin Fowler Fluent Interface и здесь.
Построение Progressive Interface рассмотрим на примере Fluent Builder для построения Email сообщений вот код данного класса
public class EmailBuilder : IEmailBuilder
{
private readonly Message message;
private EmailBuilder(Message message)
{
this.message = message;
}
public static IEmailBuilder From(string from)
{
return new EmailBuilder(new Message(from));
}
public IEmailBuilder To(string to)
{
message.To.Add(to);
return this;
}
public IEmailBuilder Subject(string subject)
{
message.Subject = subject;
return this;
}
public IEmailBuilder Body(string body)
{
message.Body = body;
return this;
}
public IEmailBuilder Cc(string cc)
{
message.Cc.Add(cc);
return this;
}
public Message Build()
{
return message;
}
}