裏口からのC#実践入門

1-23 無駄に深いクラス階層

クラス内クラスは使いどころに注意。
普通に使う場合はテンシちゃんの通りに無駄に複雑にしないように。

using System;
using System.Collections.Generic;
using System.Linq;

namespace Uraguchi.Scene1
{
    public class Tenshi23Item
    {
        public int Price { get; protected set; }
    }

    public class Tenshi23Potato : Tenshi23Item
    {
        public Tenshi23Potato()
        {
            Price = 100;
        }
    }

    public class Tenshi23Hamburger : Tenshi23Item
    {
        public Tenshi23Hamburger()
        {
            Price = 300;
        }
    }

    public class Tenshi23
    {
        public static void Run()
        {
            var purchaseList = new List<Tenshi23Item>();
            int money = 500;
            purchaseList.Add(new Tenshi23Hamburger());
            Console.WriteLine("ご一緒にポテトはいかがですか?");

            if (money >= 400)
            {
                var potato = new Tenshi23Potato();
                purchaseList.Add(potato);
            }

            Console.WriteLine("お買い上げは {0} 点です", purchaseList.Count());
            Console.WriteLine("お支払いあ合計 {0} 円です", purchaseList.Select(c => c.Price).Sum());
            if (purchaseList.Any(c => c is Tenshi23Potato))
            {
                Console.WriteLine("ポテトを買ってくれた客様にはスマイルもお付けします。ニッコリ");
            }
        }
    }
}