c#设计模式==外观模式
来源:互联网 发布:免费数据恢复app 编辑:程序博客网 时间:2024/05/21 17:52
外观模式,是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。
不知道大家有没有比较过自己泡茶和去茶馆喝茶的区别,如果是自己泡茶需要自行准备茶叶、茶具和开水,如图1(A)所示,而去茶馆喝茶,最简单的方式就是跟茶馆服务员说想要一杯什么样的茶,是铁观音、碧螺春还是西湖龙井?正因为茶馆有服务员,顾客无须直接和茶叶、茶具、开水等交互,整个泡茶过程由服务员来完成,顾客只需与服务员交互即可,整个过程非常简单省事,如图1(B)所示。
图1两种喝茶方式示意图
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Reflection;namespace 外观模式{ class Program { static void Main(string[] args) { Waiter waiter = new Waiter(); waiter.settea("BiLuoChun"); waiter.talboilwater(); waiter.talTeaSet(); waiter.talTeaLeaf(); waiter.settea("TieGuanYin"); waiter.talboilwater(); waiter.talTeaSet(); waiter.talTeaLeaf(); waiter.settea("XiHuLongJing"); waiter.talboilwater(); waiter.talTeaSet(); waiter.talTeaLeaf(); } } class Tea //煮茶基类 { public void boilwater() //煮开水 { Console.WriteLine("煮开水"); } public void TeaSet() //准备茶具 { Console.WriteLine("准备茶具"); } public virtual void TeaLeaf() { } //放入不同茶叶 } class BiLuoChun : Tea //碧螺春类 { public override void TeaLeaf() //放入碧螺春 { Console.WriteLine("放入碧螺春,静候30分钟,请品尝"); } } class TieGuanYin : Tea //铁观音类 { public override void TeaLeaf() //放入铁观音 { Console.WriteLine("放入铁观音,静候30分钟,请品尝"); } } class XiHuLongJing : Tea //西湖龙井 { public override void TeaLeaf() { Console.WriteLine("放入西湖龙井,静候30分钟,请品尝"); } } class Waiter { private Tea tea; public void settea(string teaname) //选定茶的品种 { tea = (Tea)Assembly.Load("外观模式").CreateInstance("外观模式."+teaname); //反射 } public void talboilwater() //煮开水 { tea.boilwater(); } public void talTeaSet() //准备茶具 { tea.TeaSet(); } public void talTeaLeaf() //放入茶叶 { tea.TeaLeaf(); } }}
阅读全文
0 0
- c#设计模式==外观模式
- 【C#设计模式-外观模式】
- C#设计模式--外观模式
- C#设计模式之外观
- C# 设计模式--外观模式(Facade)
- c#设计模式之[外观模式]
- C#设计模式-外观模式(Facade Patten)
- C#设计模式(外观模式)
- C#设计模式(九)外观模式
- C#设计模式——外观模式
- c#设计模式之外观模式
- 设计模式--外观模式
- 设计模式-外观模式
- 设计模式:外观模式
- 设计模式----外观模式
- 设计模式------外观模式
- 设计模式 外观模式
- 设计模式-【外观模式】
- 如何去建设一个用户体验感好的网站
- 【集训】jzoj 2017.7.6 noip模拟赛A 总结
- 异常,同一参数不同类型的判断,文件结构考虑
- STL中erase()小心使用
- 基于boost asio实现的支持ssl的通用socket框架
- c#设计模式==外观模式
- NSSet 集合创建,获取,遍历,可变集合的删除
- PC网站QQ第三方登陆
- 整理android四大组件及一些常见api的通用代码
- 摄像机
- 算法作业HW27:LeetCode 28. Implement strStr()
- java基本数据类型
- 内存越界
- HTML基础