2017年10月6日 星期五

[C#] 裝飾者模式

        //早餐
public abstract class Breakfast {
            public abstract int Cost();
        }

//主食-吐司
        public class Toast: Breakfast
        {

            public Toast() {

            }

            public override int   Cost()
            {
                return 10;

            }
        }

//配料-起司
        public class Cheese : Breakfast
        {
            private Breakfast _breakfast;
            public Cheese(Breakfast breakfast)
            {
                _breakfast = breakfast;

            }

            public override int Cost()
            {
                return 20 + _breakfast.Cost(); ;

            }
        }

//配料-火腿
        public class Ham : Breakfast
        {
            private Breakfast _breakfast;

            public Ham(Breakfast breakfast)
            {
                _breakfast = breakfast;

            }

            public override int Cost()
            {
                return 15+ _breakfast.Cost();

            }
        }

        private void Main()
        {
            Breakfast b = new Toast();
            b  = new Ham(b);
            b = new Cheese(b);

               Console.WriteLine( "價錢 :"+ b.Cost().ToString());
        }