桥接模式的应用
来源:互联网 发布:淘宝女装拍摄 云南 编辑:程序博客网 时间: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(); } } } }
阅读全文
0 0
- 桥接模式的应用
- Android设计模式应用-桥接模式
- 桥接模式的很好实现方式(应用shared_ptr)
- 深入解析iOS应用开发中对设计模式中的桥接模式的使用
- 合成模式的应用
- 观察者模式的应用
- 模式的应用
- 组合模式的应用
- 观察者模式的应用
- 装饰模式的应用
- 观察者模式的应用
- 代理模式的应用
- 观察者模式的应用
- visitor模式的应用
- 状态模式的应用
- 命令模式的应用
- “代理模式”的应用
- “适配器模式”的应用
- indexof(str)的用法
- java读取TXT文件的方法
- (个人)AR电子书系统创新实训第二周(1)
- requests库
- heartbeat(尽量保持唯一性存储)和keepalived (尽量保持可用)区别
- 桥接模式的应用
- Libusb开发教程<三> USB设备程序开发
- Linux下用mentohust解决有线锐捷链接问题
- 【codeforces 733E】Sleep in Class 题解
- UVA 548 Tree 【树+DFS】
- SDN在云数据中心的架构
- C++作业5 求和 、数组选择
- Socket服务器整体架构概述
- Android开发之ToolBar的使用