public void Do()
        {
            var doc1 = new Document
            {
                Author = "Matthew Adams",
                DocumentDate = new DateTime(2000, 01, 01),
                Text = "Am I a year early?"
            };

            var doc2 = new Document
            {
                Author = "Ian Griffiths",
                DocumentDate = new DateTime(2001, 01, 01),
                Text = "This is the new millenium, I promise you."
            };

            var processor = Configure();

            Console.WriteLine("文書1を処理しています。");
            processor.Process(doc1);
            Console.WriteLine();
            Console.WriteLine("文書2を処理しています。");
            processor.Process(doc2);
            Console.ReadKey();
        }
 public static void TranslateIntoJapanese(Document doc)
 {
     Console.WriteLine("日本語に翻訳しました。");
 }
 public static void SpellCheck(Document doc)
 {
     Console.WriteLine("スペルチェックを実行しました。");
 }
 public static void Repaginate(Document doc)
 {
     Console.WriteLine("ページ番号を振り直しました。");
 }
 public void HighlightTrademarks(Document doc)
 {
     var words = doc.Text.Split(' ', '.', ',');
     foreach (var word in words)
     {
         if(Trademarks.Contains(word))
             Console.WriteLine("'{0}'をハイライトします。",word);
     }
 }
        public void Process(Document doc)
        {
            foreach (var process in processes)
            {
                if (process.QuickCheck != null && !process.QuickCheck(doc))
                {
                    Console.WriteLine("処理は成功しないでしょう。");
                    return;
                }
            }

            foreach (var process in processes)
            {
                process.Action(doc);
            }
        }