前言

外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一系统更加容易使用.

结构图

SubSystem  Class 子系统类集合 实现子系统的功能,处理Facade对象指派的任务,注意子类中没有Facade的任何信息,即没有对Facade对象的引用

代码实现

首先是四个子系统的类

public class SubSystemOne{public void MethodOne(){Console.WriteLine("子系统方法一");}}public class SubSystemTwo{public void MethodTwo(){Console.WriteLine("子系统方法二");}}public class SubSystemThree{public void MethodThree(){Console.WriteLine("子系统方法三");}}public class SubSystemFour{public void MethodFour(){Console.WriteLine("子系统方法四");}}

外观类

    public class Facade{SubSystemOne one;SubSystemTwo two;SubSystemThree three;SubSystemFour four;public Facade(){one = new SubSystemOne();two = new SubSystemTwo();three = new SubSystemThree();four = new SubSystemFour();}public void MethodA(){Console.WriteLine("\n方法组A()----");one.MethodOne();two.MethodTwo();four.MethodFour();}public void MethodB(){Console.WriteLine("\n方法组B()----");two.MethodTwo();three.MethodThree();}}

客户端调用

    class Program{static void Main(string[] args){Facade facade = new Facade();facade.MethodA();facade.MethodB();Console.ReadLine();}}

运行结果如下

总结

首先,在设计初期阶段,应该要有意识的将不同的两个层分离。

其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂。增加外观Facade可以提供一个简单的接口,减少它们之间的依赖。

第三,在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了。可以为新系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。

转载于:https://www.cnblogs.com/aehyok/p/3315983.html

设计模式之十(外观模式)相关推荐

  1. 从王者荣耀看设计模式(十.外观模式)

    ##从王者荣耀看设计模式(外观模式) 一.简介 王者荣耀是由多人协同开发而成,每个人负责游戏的一个或多个子功能,一个完整的功能是由很多已开发的子功能组合成的.我们要玩游戏时,只需要打开王者荣耀APP, ...

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

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

  3. Java描述设计模式(12):外观模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.场景描述 在移动互联网没有普及之前,去饭店吃饭的流程大致如下:选座位,排队,点菜,结账.后来移动互联网普及,通过手机APP就 ...

  4. 设计模式学习笔记——外观模式

    外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构型模式,它向现有的系统添加一个接口,来隐藏系统的复杂性. 这种模式涉及 ...

  5. [学习笔记]设计模式[6]-{适配器模式外观模式}

    设计原则 最少知识原则:只和你的密友谈话 这个原则的意思是,在系统设计的过程中,不要让太多的类耦合在一起,免得对系统一部分的修改会影响到其他部分.在设计系统之前,应该首先注意对象与对象之间的交互关系, ...

  6. java设计模式之九外观模式(Facade)

    外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口 ...

  7. 《研磨设计模式》chap3 外观模式Facade

    1. 场景1 客户自己装机,需要一一去买配件:cpu.主板... 找专业的公司,由公司去处理: 2. 场景2 代码生成工具有4个模块 client使用时依次创建3个对象 public class Cl ...

  8. 设计模式之Facade(外观)模式

    我们通过一个简单的开关电脑模拟程序来说明Facade模式(外观模式) CPU类 public class Cpu {  public void start()  {   system.out.prin ...

  9. 设计模式之【外观模式-Facade】

    外观模式(Facade) 外观模式是为了解决类与类之家的依赖关系的 像spring一样,可以将类和类之间的关系配置到配置文件中 而外观模式就是将他们的关系放在一个Facade类中 降低了类类之间的耦合 ...

  10. 设计模式C++实现 —— 外观模式、组合模式

    外观模式应该是用的很多的一种模式,特别是当一个系统很复杂时,系统提供给客户的是一个简单的对外接口,而把里面复杂的结构都封装了起来.客户只需使用这些简单接口就能使用这个系统,而不需要关注内部复杂的结构. ...

最新文章

  1. mysql主从状态异常解决办法
  2. java模拟国际象棋游戏_java国际象棋小游戏
  3. 梓益C语言学习笔记之链表&动态内存&文件
  4. oracle中dlink使用,Oracle,MetaLink,中文使用指南
  5. 将jar添加到发布目录_第32批免购置税新能源车型目录发布;通用BEV3平台将入华...
  6. Unity5 Sprite 图集打包 AssetBundle 更新探索
  7. “互联网+”大赛之AI创新应用赛题攻略:大胆脑洞,共绘智慧生活蓝图
  8. linux系统vnc无法远程桌面,linux下vnc远程桌面连接方法分享
  9. Timer源码之TaskQueue
  10. 多任务计时器anytime
  11. 2020年度博客之星发榜了,第一次参加,第70名,感谢给我投票的老铁们,2021继续努力!
  12. 360与QQ大战观感
  13. 灵遁者散文小说集《从今往后》:永远都是开始
  14. 20篇高质量程序人生文章分享,做开发不仅仅只有代码
  15. 泽塔云荣膺“中国高科技高成长50强”,成唯一上榜超融合企业
  16. 工作心得之接口数据同步
  17. 大炮评级:玩你只是寂寞,玩死你才是目的,我可是币圈墓地!
  18. 大数据多维分析常用操作图解 OLAP Operations
  19. (Java)类的接口实验
  20. 宁夏谷歌地球高程DEM等高线下载

热门文章

  1. 联想Z5手机夺得京东销量第一,联想这是要翻盘的节奏吗?
  2. C++的int初始化
  3. 1 数列分块入门_线性代数入门——利用分块矩阵简化矩阵乘法运算
  4. java rc4_nodejs 和 java 进行 rc4 加密得到的结果不一样
  5. @value注解_Java系列之注解
  6. java 数字图片识别_java – 识别图像中的数字
  7. 内存颗粒位宽和容量_64M的SDRAM颗粒 一般内存是多大的?
  8. iis mysql版本切换_MySQL+PHP配置 Windows系统IIS版(转)
  9. 介绍几个医学图像处理会议
  10. Centos6.10源码部署zabbix-3.2.6