クラスの流暢なビルダーインターフェイスは、次のMailTemplate
ようになります。
public class MailTemplateBuilder
{
string _body;
string _subject;
string _sender;
public MailTemplateBuilder WithBody(string body)
{
_body = body;
return this;
}
public MailTemplateBuilder WithSubject(string subject)
{
_subject = subject;
return this;
}
public MailTemplateBuilder WithSender(string sender)
{
_sender = sender;
return this;
}
public MailTemplate Build()
{
return new MailTemplate(_sender, _subject, _body);
}
}
使用法は次のようになります。
var template = _builder.WithBody("body")
.WithSubject("subject")
.WithSender("sender")
.Build();
別のアプローチは、拡張メソッドを使用することです。
public static class MailTemplateBuilder
{
public static MailTemplate WithBody(this MailTemplate item, string body)
{
item.MailBody = body;
return item;
}
public static MailTemplate WithSubject(this MailTemplate item, string subject)
{
item.MailSubject = subject;
return item;
}
public static MailTemplate WithSender(this MailTemplate item, string sender)
{
item.MailFrom = sender;
return item;
}
}
使用法は次のようになります。
var template = new MailTemplate().WithBody("body")
.WithSubject("subject")
.WithSender("sender");
注意:
どちらの場合も、MailTemplate
クラスはこの流暢なインターフェースのコードで汚染されていません。単純なクラスになります。
public class MailTemplate
{
public string MailBody { get; set; } = "";
public string Subject { get; set; } = "";
public string MailFrom { get; set; } = "";
}
したがって、提供されている流暢なインターフェイスのいずれかを使用してそのインスタンスを作成した後、プロパティにアクセスすることで値を読み取ることができます。
var body = template.MailBody;