Пример #1
0
        /// <summary>
        /// 多態性を用いて処理を行うが、オブジェクトによって少し挙動を変えるテスト
        /// </summary>
        /// <param name="runnable">実行可能オブジェクト</param>
        static void ExecutableObjectRunTest2(IRunnable runnable)
        {
            // もう少し細分化して処理を決めたい場合
            // ただし、一部のオブジェクトに関して処理を分岐する。
            // (大体のオブジェクトには同じ処理を適応する)

            // taminato:↓HumanにBeforeとAfterのメソッド追加でどう?
            // yasutomi: せっかくだから分離してみた
            // 人間を処理する場合にはひと手間加える
            if (runnable is IHuman)
            {
                Console.WriteLine("人間が処理を行います");

                IHuman human = runnable as IHuman;
                human?.BeforeRun();
                runnable?.Run();
                human?.AfterRun();
            }
            else
            {
                runnable?.Run();
            }
        }