見出し画像

時間芸術としての天丼(190307)

本日の日報記です。

9時:
起床。
予約していたはずの炊飯器が動いてなくて、さめざめと泣く。

11時:
出社。
なんか粛々と作業してて、何やっていたか思い出せない。とりあえず進みはした。お昼にバナナを食べたことだけは鮮明に覚えている。

21時半:
帰宅。
予約していたはずの炊飯器が動いてなくて、何もかもが憎くなってしまった。買い替えるまでは予約しない。

22時半:
ベースを弾く。

割と最近生きるモチベになってるので音楽は偉大。

1時:
C#の練習。
こないだの自販機プログラムの呼び出し側を変えて、要件を満たす実装に少し手を付けた。利用者側から逆算してプログラム組むの、結構個人的にはグッドなソリューションのような気がする...(できた時の理想をうまく描ければ)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class VendingMachineSample : MonoBehaviour
{

    public enum CompanyType
    {
        UNDEFINE,
        COCACOLA,
        ASAHI,
        SUNTORY
    }

    public class VendingMachineFactory
    {
        public VendingMachine Create(CompanyType companyType)
        {
            switch(companyType)
            {
                case CompanyType.COCACOLA:
                    return new CocacolaVendingMachine();
               
                case CompanyType.ASAHI:
                    return new AsahiVendingMachine();

                case CompanyType.SUNTORY:
                    return new SuntoryVendingMachine();

                default:
                    return new UndefineVendingMachine();
            }
        }
    }

    public abstract class VendingMachine
    {

    }
    class CocacolaVendingMachine : VendingMachine
    {

    }
    class AsahiVendingMachine : VendingMachine
    {

    }
    class SuntoryVendingMachine : VendingMachine
    {

    }
    class UndefineVendingMachine : VendingMachine
    {

    }

    #region MonoBehaviourMessages
    private void Start()
    {
        //各社の自販機たち
        VendingMachineFactory vmFactory = new VendingMachineFactory();
        VendingMachine cocacolaVM = vmFactory.Create(CompanyType.COCACOLA);
        VendingMachine asahiVM = vmFactory.Create(CompanyType.ASAHI);
        VendingMachine suntoryVM = vmFactory.Create(CompanyType.SUNTORY);

        //各社の自販機の在庫
        BeverageStockFactory bsFactory = new BeverageStockFactory();
        BeverageStock cocacolaStock = bsFactory.Create(CompanyType.COCACOLA);
        BeverageStock asahiStock = bsFactory.Create(CompanyType.ASAHI);
        BeverageStock suntoryStock = bsFactory.Create(CompanyType.SUNTORY);

        //在庫補充
        cocacolaVM.Supply(cocacolaStock); //public void Supply(CocacolaStock s)
        asahiVM.Supply(asahiStock);       //public void Supply(AsahiStock s)
        suntoryVM.Supply(suntoryStock);   //public void Supply(SuntoryStock s)

        //お金が投入されたので、購入可能な項目(お金・在庫が足りてる)を返す
        AvailableList availableList = cocacolaVM.InsertedMoney(150);

        //購入
        Beverage BeveragePurcahsed = avalableList.Buy(3);

    }
    #endregion
}

明日もよろしくお願いします。

この記事が気に入ったらサポートをしてみませんか?