桥接模式的应用
一个咖啡店可以提供大杯(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();
}
}
}
}