桥接模式的应用

来源:互联网 发布:淘宝女装拍摄 云南 编辑:程序博客网 时间:2024/05/20 22:00

桥接模式的应用

一个咖啡店可以提供大杯(JorumCoffee)、中杯(MediumCoffee)、小杯(SmallCoffee)的咖啡(Coffee),为了满足不同用户的口味,在咖啡中可以添加牛奶(Milk),或者糖(Sugar),或者柠檬(Lemon),提供给用户不同口味的组合,如大杯咖啡加牛奶,中杯咖啡加糖,小杯咖啡加柠檬,小杯咖啡加糖等。应用桥接模式,用C#控制台应用程序实现该设计。绘制该模式的UML图。



using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;class Program{    abstract class Additives     {        public abstract void drink();    }    class Milk : Additives      {        public override void drink()        {            Console.WriteLine("牛奶");        }    }    class Sugar : Additives       {        public override void drink()        {            Console.WriteLine("糖");        }    }    class Lemon : Additives       {        public override void drink()        {            Console.WriteLine("柠檬");        }    }    abstract class Coffee      {        public Coffee() { }        protected Additives adt;        public void add_additive(Additives adt)        {            this.adt = adt;        }        public abstract void drink();    }     class JorumCoffee:Coffee      {        public JorumCoffee() { }         public  override void drink()        {            Console.Write("大杯");            adt.drink();        }    }     class MediumCoffee:Coffee     {        public MediumCoffee() { }        public  override void drink()        {            Console.Write("中杯");            adt.drink();        }    }   class SmallCoffee:Coffee      {        public SmallCoffee() { }        public override void drink()        {            Console.Write("小杯");            adt.drink();        }    }    static void Main(string[] args)     {        Coffee  [][] cf=new Coffee[3][] ;        for(int i=0;i<3;i++)        {            cf[i] = new Coffee[3];            for (int j=0;j<3;j++)            {                if (i == 0) cf[i][j] = new JorumCoffee();                else if (i == 1) cf[i][j] = new MediumCoffee();                else cf[i][j] = new SmallCoffee();                if (j == 0) cf[i][j].add_additive(new Milk());                else if(j==1) cf[i][j].add_additive(new Lemon());                else  cf[i][j].add_additive(new Sugar());                cf[i][j].drink();            }        }             } }


原创粉丝点击