C#设计模式--外观模式
来源:互联网 发布:模拟考驾照软件 编辑:程序博客网 时间:2024/06/07 17:59
0.C#设计模式--简单工厂模式
1.C#设计模式--工厂方法模式
2.C#设计模式--抽象工厂模式
3.C#设计模式--单例模式
4.C#设计模式--建造者模式
5.C#设计模式--原型模式
6.C#设计模式--适配器模式
7.C#设计模式--装饰器模式
8.C#设计模式--代理模式
设计模式:
外观模式(Facade Pattern)
简单介绍:
外观模式(Facade Pattern):
外观模式(Facade)的定义:为子系统中的一组接口提供一个一致的界面,用来访问子系统中的一群接口。
比如调用子系统1和子系统2的Print方法,如果没有外观模式那么你需要一个个的调用,子系统如果是少还好,多了就要疯了,这里就可以使用外观模式,调用外观模式对外提供的方法一次性完成对子系统的层层调用
生活实例:比如笔记本是一个整体,看似是一件东西,实际上只是将主机和显示器组装在一起而已,对外提供一个电源按钮,当按下电源按钮的时候,启动了主机和显示器,这里的这个电源按钮就差不多是外观模式。对外只提供了一个电源按钮。
外观模式组成:
Facade:负责子系统的的封装调用
Subsystem Classes:具体的子系统,实现由外观模式Facade对象来调用的具体任务
外观模式类图:
外观模式C#代码举例:
SubSystem1:子系统1
/// <summary> /// 子系统1 /// </summary> public class SubSystem1 { public void Print1() { Console.WriteLine("SubSystem1"); } }
SubSystem2:子系统2类
/// <summary> /// 子系统2 /// </summary> public class SubSystem2 { /// <summary> /// 子系统2 /// </summary> public void Print2() { Console.WriteLine("SybSystem2"); } }
Facade:外观模式对外提供接口类
/// <summary> /// 外观模式对外接口类 /// </summary> public class Facade { private SubSystem1 _subSystem1; private SubSystem2 _subSystem2; public Facade() { _subSystem1 = new SubSystem1(); _subSystem2 = new SubSystem2(); } public void Print() { _subSystem1.Print1(); _subSystem2.Print2(); } }
用户测试类:
/// <summary> /// 客户端测试类 /// </summary> class Client { static void Main(string[] args) { Facade facade = new Facade(); facade.Print(); Console.Read(); } }
运行结果:
外观模式生活实例笔记本例子:
生活实例:比如笔记本是一个整体,看似是一件东西,实际上只是将主机和显示器组装在一起而已,对外提供一个电源按钮,当按下电源按钮的时候,启动了主机和显示器,这里的这个电源按钮就差不多是外观模式。对外只提供了一个电源按钮。
假设笔记本是由来个子系统:显示器和主机组成
当按下电源按钮,开启主机和显示器
外观模式生活实例笔记本例子类图:
外观模式生活实例笔记本例子C#代码:
PC_Monitor:笔记本显示器类
/// <summary> /// 笔记本显示器 /// </summary> public class PC_Monitor { public void Open() { Console.WriteLine("开启显示器"); } public void Close() { Console.WriteLine("关闭显示器"); } }
PC_Host:笔记本主机类
/// <summary> /// 笔记本主机 /// </summary> public class PC_Host { public void Open() { Console.WriteLine("开启主机"); } public void Close() { Console.WriteLine("关闭主机"); } }
PC_Facade:笔记本外观模式对外接口类
/// <summary> /// 笔记本对外接口类 /// </summary> public class PC_Facade { private PC_Monitor _PC_Monitor; private PC_Host _PC_Host; public PC_Facade() { _PC_Monitor = new PC_Monitor(); _PC_Host = new PC_Host(); } public void Open() { Console.WriteLine("开机……"); _PC_Monitor.Open(); _PC_Host.Open(); } public void Close() { Console.WriteLine("关机……"); _PC_Host.Close(); _PC_Monitor.Close(); } }
用户测试代码:
class Client { /// <summary> /// 用户测试类 /// </summary> /// <param name="args"></param> static void Main(string[] args) { PC_Facade pc_facade = new PC_Facade(); //开机 pc_facade.Open(); //关机 pc_facade.Close(); Console.Read(); } }
运行结果:
外观模式C#工程源码下载
0 0
- 【C#设计模式-外观模式】
- C#设计模式--外观模式
- C#设计模式之外观
- C# 设计模式--外观模式(Facade)
- c#设计模式之[外观模式]
- C#设计模式-外观模式(Facade Patten)
- C#设计模式(外观模式)
- C#设计模式(九)外观模式
- C#设计模式——外观模式
- c#设计模式之外观模式
- c#设计模式==外观模式
- 设计模式--外观模式
- 设计模式-外观模式
- 设计模式:外观模式
- 设计模式----外观模式
- 设计模式------外观模式
- 设计模式 外观模式
- 设计模式-【外观模式】
- PHP数组函数试题
- 树莓派国内可用镜像源
- OC 之 atomic 与 nonatomic的区别
- 二进制文件 与 文本文件
- Android系统APP之SettingsProvider
- C#设计模式--外观模式
- JDBC实现分页查询
- ElementUI案例演示:导航、布局、加载动画
- 历届试题 高僧斗法 阶梯博弈
- Git 在centos 环境下的安装
- GOF设计模式-命令模式
- Hue 安装问题django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: libmysqlclient.so
- Linux ssh ftp 用户访问权限
- IOS实战 (5+) 仿 省份选择-车牌号录入