C#设计模式--外观模式

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

 1     /// <summary>
 2     /// 子系统1
 3     /// </summary>
 4     public class SubSystem1
 5     {
 6         public void Print1()
 7         {
 8             Console.WriteLine("SubSystem1");
 9         }
10     }

SubSystem2:子系统2类

 1     /// <summary>
 2     /// 子系统2
 3     /// </summary>
 4     public class SubSystem2
 5     {
 6         /// <summary>
 7         /// 子系统2
 8         /// </summary>
 9         public void Print2()
10         {
11             Console.WriteLine("SybSystem2");
12         }
13     }

Facade:外观模式对外提供接口类

 1     /// <summary>
 2     ///  外观模式对外接口类
 3     /// </summary>
 4     public class Facade
 5     {
 6         private SubSystem1 _subSystem1;
 7         private SubSystem2 _subSystem2;
 8 
 9         public Facade()
10         {
11             _subSystem1 = new SubSystem1();
12             _subSystem2 = new SubSystem2();
13         }
14 
15         public void Print()
16         {
17             _subSystem1.Print1();
18             _subSystem2.Print2();
19         }
20     }

用户测试类:

 1     /// <summary>
 2     /// 客户端测试类
 3     /// </summary>
 4     class Client
 5     {
 6         static void Main(string[] args)
 7         {
 8             Facade facade = new Facade();
 9             facade.Print();
10             Console.Read();
11         }
12     }

运行结果:

外观模式生活实例笔记本例子:

生活实例:比如笔记本是一个整体,看似是一件东西,实际上只是将主机和显示器组装在一起而已,对外提供一个电源按钮,当按下电源按钮的时候,启动了主机和显示器,这里的这个电源按钮就差不多是外观模式。对外只提供了一个电源按钮。

假设笔记本是由来个子系统:显示器和主机组成

当按下电源按钮,开启主机和显示器

外观模式生活实例笔记本例子类图:

外观模式生活实例笔记本例子C#代码:

PC_Monitor:笔记本显示器类

 1     /// <summary>
 2     /// 笔记本显示器
 3     /// </summary>
 4     public class PC_Monitor
 5     {
 6         public void Open()
 7         {
 8             Console.WriteLine("开启显示器");
 9         }
10         public void Close()
11         {
12             Console.WriteLine("关闭显示器");
13         }
14     }

PC_Host:笔记本主机类

 1     /// <summary>
 2     /// 笔记本主机
 3     /// </summary>
 4     public class PC_Host
 5     {
 6         public void Open()
 7         {
 8             Console.WriteLine("开启主机");
 9         }
10         public void Close()
11         {
12             Console.WriteLine("关闭主机");
13         }
14     }

PC_Facade:笔记本外观模式对外接口类

 1     /// <summary>
 2     /// 笔记本对外接口类
 3     /// </summary>
 4     public class PC_Facade
 5     {
 6         private PC_Monitor _PC_Monitor;
 7         private PC_Host _PC_Host;
 8 
 9         public PC_Facade()
10         {
11             _PC_Monitor = new PC_Monitor();
12             _PC_Host = new PC_Host();
13         }
14 
15         public void Open()
16         {
17             Console.WriteLine("开机……");
18             _PC_Monitor.Open();
19             _PC_Host.Open();
20         }
21 
22         public void Close()
23         {
24             Console.WriteLine("关机……");
25             _PC_Host.Close();
26             _PC_Monitor.Close();
27         }
28     }

用户测试代码:

 1     class Client
 2     {
 3         /// <summary>
 4         /// 用户测试类
 5         /// </summary>
 6         /// <param name="args"></param>
 7         static void Main(string[] args)
 8         {
 9             PC_Facade pc_facade = new PC_Facade();
10             //开机
11             pc_facade.Open();
12             //关机
13             pc_facade.Close();
14             Console.Read();
15         }
16     

运行结果:

外观模式C#工程源码下载

 

posted @ 2017-03-01 14:43  JiYF  阅读(1592)  评论(0编辑  收藏  举报