zoukankan      html  css  js  c++  java
  • 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#工程源码下载

  • 相关阅读:
    VS2005 GridView操作大全(转载)
    架构与模式
    JS全选与取消
    C#查找指定文件夹下指定后缀名的所有文件
    select poll epoll Hello
    scanf() gets() fgets()使用注意事项 Hello
    gtk_init() Hello
    用C实现FFT算法 Hello
    时间相关函数 Hello
    gcc的编译属性和选项 Hello
  • 原文地址:https://www.cnblogs.com/JiYF/p/6484208.html
Copyright © 2011-2022 走看看