一、外观模式简介(Brief Intro<?XML:NAMESPACE PREFIX = ST2 />duction)

外观模式,为子系统的一组接口提供一个统一的界面,此模式定义了一个高层接口,这一个高层接口使的子系统更加容易使用。
<?XML:NAMESPACE PREFIX = O />

二、解决的问题(What To Solve)

1、分离不同的两个层

       典型的分层例子是Net三层架构,界面层与业务逻辑层分离,业务逻辑层与数据访问层分类。这样可以为子系统提供统一的界面和接口,降低了系统的耦合性。

2、减少依赖

       随着功能增加及程序的重构,系统会变得越来越复杂,这时增加一个外观可以提供一个简单的接口,减少他们之间的依赖。

3、为新旧系统交互提供接口

       有的时候,新系统需要旧系统的核心功能,而这个旧的系统已经很难维护和扩展,可以给新系统增加一个Façade类,是的新系统与Façade类交互,Façade类与旧系统交互素有复杂的工作。

三、外观模式分析(Analysis)

1、外观模式结构

<?XML:NAMESPACE PREFIX = V />

2、源代码

1、子系统类SubSystemOne
public class SubSystemOne
{
    public void MethodOne()
    {
        Console.WriteLine("执行子系统One中的方法One");
    }
}
2、子系统类SubSystemTwo
public class SubSystemTwo
{
    public void MethodTwo()
    {
        Console.WriteLine("执行子系统Two中的方法Two");
    }
}
3、子系统类SubSystemThree
public class SubSystemThree
{
    public void MethodThree()
    {
        Console.WriteLine("执行子系统Three中的方法Three");
    }
}
4、Facade 外观类,为子系统类集合提供更高层次的接口和一致的界面
public class Facade
{
    SubSystemOne one;
    SubSystemTwo two;
    SubSystemThree three;
    public Facade()
    {
        one = new SubSystemOne();
        two = new SubSystemTwo();
        three = new SubSystemThree();
    }
    public void MethodA()
    {
        Console.WriteLine("开始执行外观模式中的方法A");
        one.MethodOne();
        two.MethodTwo();
        Console.WriteLine("外观模式中的方法A执行结束");
        Console.WriteLine("---------------------------");
    }
    public void MethodB()
    {
        Console.WriteLine("开始执行外观模式中的方法B");
        two.MethodTwo();
        three.MethodThree();
        Console.WriteLine("外观模式中的方法B执行结束");
    }
}
5、客户端代码
static void <?XML:NAMESPACE PREFIX = ST1 />Main(string[] args)
{
    Facade facade = new Facade();
    facade.MethodA();
    facade.MethodB();
    Console.Read();
}

3、程序运行结果

Net设计模式实例之外观模式(Façade Pattern)(1)相关推荐

  1. Net设计模式实例之桥接模式( Bridge Pattern)(4)

    3.客户端代码<?XML:NAMESPACE PREFIX = O /> static void <?XML:NAMESPACE PREFIX = ST2 />Main(str ...

  2. Net设计模式实例之备忘录模式(Memento Pattern)

    一.备忘录模式简介(Brief Introduction) 备忘录模式(Memento Pattern),在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可以就该对 ...

  3. Net设计模式实例之建造者模式(Builder Pattern)(2)

    四.案例分析(Example) 1.场景 假设房子只有房顶和墙(Roof And Walls)<?XML:NAMESPACE PREFIX = O /> Jane和 Joe两个客户需要从建 ...

  4. Net设计模式实例之桥接模式( Bridge Pattern)(2)

    四.桥接模式实例分析(Example) 1.场景 业务对象(BusinessObject)与数据对象(DataObject)分离,即业务对象CustormerBase与数据对象DataObject分离 ...

  5. 如何让孩子爱上设计模式 ——11.外观模式(Facade Pattern)

    如何让孩子爱上设计模式 --11.外观模式(Facade Pattern) 标签: 设计模式初涉 场景引入 相信各位玩过LOL英雄联盟游戏的童鞋,对下面两个英雄都不会陌生吧:       分别是瑞雯和 ...

  6. 设计模式 -结构型模式_门面模式(外观模式) Facade Pattern 在开源软件中的应用

    文章目录 Pre 定义 案例 Demo V1.0 Boss直接管理 V2.0 引入外观类 PmManagerFacade 何时使用Facade Tomcat Mybatis Pre 我们先来回顾下门面 ...

  7. 使用C#实现适配器模式 (Adapter Pattern) 和外观模式 (Facade Pattern)

    本文的概念内容来自深入浅出设计模式一书 现实世界中的适配器(模式) 我带着一个国标插头的笔记本电脑, 来到欧洲, 想插入到欧洲标准的墙壁插座里面, 就需要用中间这个电源适配器. 面向对象的适配器 你有 ...

  8. 【白话设计模式二】外观模式(Facade)

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# 白话设计模式 工厂模式 单例模式 [白话设计模式一]简单工厂模式(Simple Factory) [白话设计模式二] ...

  9. c++外观模式façade

    c++外观模式façade 概念 角色和职责 案例 概念 Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种.Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个 ...

最新文章

  1. SQL server 2000/2005 智能感应插件(菜鸟新手的帮手)
  2. Atitit.异步编程 java .net php python js 对照
  3. 登录界面设计及功能实现
  4. VTK:图像方向用法实战
  5. python中的max_row_Openpyxl max_row和max_column错误地报告了一个较大的figu
  6. android 瀑布流
  7. 花书+吴恩达深度学习(二二)自编码器(欠完备,DAE,CAE,PSD)
  8. java map 对象作为key_Java 将自定义的对象作为HashMap的key
  9. 做高频通用还是低频专业
  10. CSS:实现闪烁效果动画
  11. 清华大学软件工程课程总结
  12. 怎么把计算机加入网络打印机共享打印机共享,打印机共享怎么设置
  13. 如何测试工业以太网线缆(利用FLUKE DSX-8000)?
  14. 空间中异面直线距离的计算
  15. [Python] python + selenium 抓取 京东商品数据(商品名称,售价,店铺,分类,订单信息,好评率,评论等)
  16. 在网上买中国工商银行基金
  17. stm32 pwm频率与周期计算
  18. CSDN社区电子杂志项目(CSDN eMag)所有期刊总索引
  19. Ubuntu搭建zhenxunbot聊天机器人
  20. 基于Airtest陀螺世界辅助源代码

热门文章

  1. python xml etree_使用Python etree更新XML元素和属性值
  2. 神威计算机主板型号,十代酷睿高端型Z490主板曝光 总线规格依旧是PCIe 3.0且USB接口并不支持USB 3.2...
  3. sudo chown -R $(whoami) /usr/local/lib/pkgconfig
  4. inline函数的好处与缺点
  5. Numpy的使用(4)
  6. 图书馆用文本文件booklist.txt记录图书的书目,其中包括book1,book2,.....,book10.现在又要采购一批新书,编写程序将新的书目添加到目录中。
  7. Pytorch基础(一) 初始tensor
  8. 连接显示器与计算机主机的接口电路是,液晶显示器VGA模拟输入接口电路
  9. resnet预训练模型_干货 | NLP中的十个预训练模型
  10. 软中断网卡处理Linux高性能外部设备处理机制SMP