桥接模式(Bridge)

简介:
复制代码
  1 /*
  2  * 一个咖啡店可以提供大杯(JorumCoffee)、中杯(MediumCoffee)、小杯(SmallCoffee)的咖
  3  * 啡(Coffee),为了满足不同用户的口味,在咖啡中可以添加牛奶(Milk),或者糖(Sugar),
  4  * 或者柠檬(Lemon),提供给用户不同口味的组合,如大杯咖啡加牛奶,中杯咖啡加糖,小
  5  * 杯咖啡加柠檬,小杯咖啡加糖等。应用桥接模式,用C#控制台应用程序实现该设计。
  6  */
  7 using System;
  8 using System.Collections.Generic;
  9 using System.Linq;
 10 using System.Text;
 11 
 12 namespace Bridge
 13 {
 14     abstract class Taste
 15     {
 16         public abstract string Add();
 17     }
 18     class Milk : Taste
 19     {
 20         public override string Add()
 21         {
 22             return "牛奶";
 23         }
 24     }
 25     class Suger : Taste
 26     {
 27         public override string Add()
 28         {
 29             return "";
 30         }
 31     }
 32     class Lemon : Taste
 33     {
 34         public override string Add()
 35         {
 36             return "柠檬";
 37         }
 38     }
 39 
 40     class Coffee
 41     {
 42         protected Taste taste;
 43         public void SetTaste(Taste taste)
 44         {
 45             this.taste = taste;
 46         }
 47         public virtual void Add()
 48         {
 49             Console.WriteLine("向咖啡中添加了" + taste.Add() + "");
 50         }
 51     }
 52     class JorumCoffee : Coffee
 53     {
 54         public JorumCoffee()
 55         {
 56             Console.WriteLine("买了一大杯咖啡。");
 57         }
 58         public override void Add()
 59         {
 60             Console.WriteLine("向大杯咖啡中添加了" + taste.Add() + "");
 61         }
 62     }
 63     class MediumCoffee : Coffee
 64     {
 65         public MediumCoffee()
 66         {
 67             Console.WriteLine("买了一中杯咖啡。");
 68         }
 69         public override void Add()
 70         {
 71             Console.WriteLine("向中杯咖啡中添加了" + taste.Add() + "");
 72         }
 73     }
 74     class SmallCoffee : Coffee
 75     {
 76         public SmallCoffee()
 77         {
 78             Console.WriteLine("买了一小杯咖啡。");
 79         }
 80         public override void Add()
 81         {
 82             Console.WriteLine("向小杯咖啡中添加了" + taste.Add() + "");
 83         }
 84     }
 85 
 86     class Program
 87     {
 88         static void Main(string[] args)
 89         {
 90             Milk milk = new Milk();
 91             Suger suger = new Suger();
 92             Lemon lemon = new Lemon();
 93 
 94             Coffee jc = new JorumCoffee();
 95             jc.SetTaste(milk);
 96             jc.Add();
 97 
 98             Coffee mc = new MediumCoffee();
 99             mc.SetTaste(suger);
100             mc.Add();
101 
102             Coffee sc = new SmallCoffee();
103             sc.SetTaste(lemon);
104             sc.Add();
105         }
106     }
107 }
复制代码

 


本文转自ZH奶酪博客园博客,原文链接:http://www.cnblogs.com/CheeseZH/archive/2012/05/16/2505569.html,如需转载请自行联系原作者

相关文章
|
网络协议 应用服务中间件 nginx
24 个 Docker 常见问题处理技巧
24 个 Docker 常见问题处理技巧
1577 1
|
编译器
Qt获取当前所用的Qt版本、编译器、位数等信息
Qt获取当前所用的Qt版本、编译器、位数等信息
|
IDE 开发工具 Windows
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Search组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Search组件
860 0
|
Kubernetes Java 微服务
Spring Boot与Kubernetes结合:构建高可靠、高性能的微服务架构
Spring Boot与Kubernetes结合:构建高可靠、高性能的微服务架构
449 0
|
Linux Go Windows
NATS服务器部署及测试
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/51002444 NATS服务器部署及测试 作者:chszs,未经博主允许不得转载。
3023 0
|
5月前
|
Ubuntu 应用服务中间件 网络安全
关于一些轻量云服务器SSH断连的疑问
在使用2H2G配置的轻量级Ubuntu 22.04服务器时,按照Solana官网教程安装环境,执行`[cargo install]`命令(特别是安装avm和anchor包时),出现SSH连接中断且无法重新登录的问题。推测可能是低配服务器资源耗尽导致SSH进程被终止,即便CPU使用率下降也无法恢复连接,需重启服务器并等待约30分钟才能恢复正常。此现象或与服务器性能限制有关,期待更多测试与解释。
|
7月前
|
NoSQL Redis
Redis的数据淘汰策略有哪些 ?
Redis 提供 8 种数据淘汰策略: 淘汰易失数据(具有过期时间的数据) 1. volatile-lru(least recently used):从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰 2. volatile-lfu(least frequently used):从已设置过期时间的数据集(server.db[i].expires)中挑选最不经常使用的数据淘汰 3. volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰 4. volatile-random:从已设置过期
|
SQL
SqlServer 服务无法启动 操作系统错误: 5(拒绝访问。)
SqlServer 服务无法启动 操作系统错误: 5(拒绝访问。)
517 0
SqlServer 服务无法启动 操作系统错误: 5(拒绝访问。)
|
8月前
|
缓存 Java 应用服务中间件
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
1356 5
|
存储 传感器 监控
理解并利用物联网(IoT)数据的技术探索
【8月更文挑战第11天】物联网数据是数字化转型的重要资源。通过深入理解物联网数据的特性和价值,并采取有效的收集、处理和分析策略,我们可以更好地利用这些数据为企业决策提供支持、优化运营效率、创造新的商业模式并推动数字化转型的深入发展。