「増補改訂版Java言語で学ぶデザインパターン入門」の「Facadeパターン」をC#で書いてみました。
GitHubにもコードを置いています。
  
    参考
    DesignPattern【Facade】GitHub
  
コード
参考記事に以下のような説明があります。
NuGet パッケージ「Authlete.Authlete」に含まれる PropertiesLoader クラスは Properties ファイルの仕様を解釈することができる。
これにより、キーバリュー形式のテキストファイルを読み込むことができます。
using Authlete.Util;
public class Database
{
    private Database()
    {
    }
    // 参考記事
    // https://qiita.com/TakahikoKawasaki/items/3120e539c87802b23c03
    public static IDictionary string, string> GetProperties(string dbname)
    {
        string filename = $"{dbname}.txt";
        IDictionary string, string> prop;
        using (var reader = new StreamReader(filename))
        {
            prop = PropertiesLoader.Load(reader);
        }
        return prop;
    }
}
public class HtmlWriter
{
    private StreamWriter writer;
    public HtmlWriter(StreamWriter writer)
    {
        this.writer = writer;
    }
    public void Title(string title)
    {
        writer.Write(" html>");
        writer.Write(" head>");
        writer.Write($" title>{title} /title>");
        writer.Write(" /head>");
        writer.Write(" body>\n");
        writer.Write($" h1>{title} /h1>");
    }
    public void Paragraph(string msg)
    {
        writer.Write($" p>{msg} /p>\n");
    }
    public void Link(string href, string caption)
    {
        Paragraph($" a href=\"{href}\">{caption} /a>");
    }
    public void MailTo(string mailaddr, string username)
    {
        Link($"mailto:{mailaddr}", username);
    }
    public void Close()
    {
        writer.Write(" /body>");
        writer.Write(" /html>\n");
        writer.Close();
    }
}
public class PageMaker
{
    private PageMaker()
    {
    }
    public static void MakeWelcomePage(string mailaddr, string filename)
    {
        try
        {
            IDictionary string, string> mailprop = Database.GetProperties("maildata");
            string username = mailprop[mailaddr];
            using (var sw = new StreamWriter(filename))
            {
                HtmlWriter writer = new HtmlWriter(sw);
                writer.Title($"Welcome to {username}'s page!");
                writer.Paragraph($"{username}のページへようこそ");
                writer.Paragraph("メール待ってますね");
                writer.MailTo(mailaddr, username);
                writer.Close();
                Console.WriteLine($"{filename} is created for {mailaddr} ({username})");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
        }
    }
}
class Program
{
    static void Main(string[] args)
    {
        PageMaker.MakeWelcomePage("hyuki@hyuki.com", "welcom.html");
    }
}
実行結果は以下のようになります。
welcom.html is created for hyuki@hyuki.com (Hiroshi Yuki)
その他のデザインパターンは以下の記事から確認してください。



