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

  这个模式比较简单。

  1、C#演示代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Appearance
{internal class Program{static void Main(string[] args){Appearance xx=new Appearance();xx.ToDo1();Console.WriteLine("");xx.ToDo2();}}public class ObjA{public void ToDoA(){Console.WriteLine("ObjA的执行");}}public class ObjB{public void ToDoB(){Console.WriteLine("ObjB的执行");}}public class ObjC{public void ToDoC(){Console.WriteLine("ObjC的执行");}}public class Appearance{private ObjA objA;private ObjB objB;private ObjC objC;public Appearance(){this.objA = new ObjA();this.objB = new ObjB();this.objC = new ObjC();}public void ToDo1() {objA.ToDoA();objB.ToDoB();}public void ToDo2(){objB.ToDoB();objC.ToDoC();}}
}

  输出结果:

  2、JavaScript演示代码:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>外观模式</title></head><body><div id="demo"></div><script>function ObjA(){this.ToDoA=function(){PrintInfo("ObjA的执行");};}function ObjB(){this.ToDoB=function(){PrintInfo("ObjB的执行");};}function ObjC(){this.ToDoC=function(){PrintInfo("ObjC的执行");};}function Appearance(){this.ObjA=new ObjA();this.ObjB=new ObjB();this.ObjC=new ObjC();this.ToDo1=function(){this.ObjA.ToDoA();this.ObjB.ToDoB();};this.ToDo2=function(){this.ObjB.ToDoB();this.ObjC.ToDoC();}}function PrintInfo(Str){document.getElementById("demo").innerHTML = document.getElementById("demo").innerHTML + Str+"<br>";}AA=new Appearance();AA.ToDo1();PrintInfo("");AA.ToDo2();</script></body>
</html>

  网页里的输出:

ObjA的执行
ObjB的执行ObjB的执行
ObjC的执行

  3、PHP演示代码:

<?phpclass Appearance{private $ObjA;private $ObjB;private $ObjC;function __construct(){$this->ObjA=new ObjA;$this->ObjB=new ObjB;$this->ObjC=new ObjC;            }function ToDo1(){$this->ObjA->ToDoA();$this->ObjB->ToDoB();}function ToDo2(){$this->ObjB->ToDoB();$this->ObjC->ToDoC();}       }class ObjA{function ToDoA(){echo "ObjA的执行。<br>";}}class ObjB{function ToDoB(){echo "ObjB的执行。<br>";}}class ObjC{function ToDoC(){echo "ObjC的执行。<br>";}}$Appearance=new Appearance;$Appearance->ToDo1();echo "<br>";$Appearance->ToDo2();
?>

  网页里的输出:

ObjA的执行。
ObjB的执行。ObjB的执行。
ObjC的执行。

  4、Java演示代码:

class DesignAppearance{public static void main(String[] args){Appearance xx=new Appearance();xx.ToDo1();System.out.println("");xx.ToDo2();        }
}class ObjA{public void ToDoA(){System.out.println("ObjA的执行");}
}class ObjB{public void ToDoB(){System.out.println("ObjB的执行");}
}class ObjC{public void ToDoC(){System.out.println("ObjC的执行");}
}class Appearance{private ObjA OA = new ObjA();private ObjB OB = new ObjB();private ObjC OC = new ObjC();public Appearance(){System.out.println("初始化");}public void ToDo1(){OA.ToDoA();OB.ToDoB();     }public void ToDo2(){OB.ToDoB();OC.ToDoC();     }
}

  结果输出:

  5、Pthon演示代码:

class ObjA:def todoA(self):print("ObjA的执行")class ObjB:def todoB(self):print("ObjB的执行")class ObjC:def todoC(self):print("ObjC的执行")class Appearance:def __init__(self):self.AA=ObjA()self.BB=ObjB()self.CC=ObjC()def todo1(self):self.AA.todoA()self.BB.todoB()def todo2(self):self.BB.todoB()self.CC.todoC()xx=Appearance()
xx.todo1()
print("")
xx.todo2()

  控制台输出:

ObjA的执行
ObjB的执行ObjB的执行
ObjC的执行

  6、C++演示代码

#include <iostream>
using namespace std;class ObjA
{
public:void ToDoA() {std::cout << "ObjA的执行\n";}
};class ObjB
{
public:void ToDoB() {std::cout << "ObjB的执行\n";}
};class ObjC
{
public:void ToDoC() {std::cout << "ObjC的执行\n";}
};class Facade
{
public:Facade() {OA = new ObjA;OB = new ObjB;OC = new ObjC;}~Facade() {delete OA;delete OB;delete OC;}void TODO1() {OA->ToDoA();OB->ToDoB();}void TODO2() {OB->ToDoB();OC->ToDoC();}
private:ObjA *OA;ObjB *OB;ObjC *OC;
};int main()
{Facade* APP = new Facade;APP->TODO1();APP->TODO2();//delete APP;system("pause");return 1;
}

  输出:

设计模式之外观模式(C# / JavaScript / PHP / Java / Python / C++ 演示代码)相关推荐

  1. Javascript 设计模式之外观模式【讲师辅导】-曾亮-专题视频课程

    Javascript 设计模式之外观模式[讲师辅导]-770人已学习 课程介绍         随着 javascript ES6/7 的发布,很多老版本的设计模式的实现,今天来看是错误的,将被彻底. ...

  2. 研磨设计模式之外观模式(Facade)(解决方案)

    3.2  解决方案 3.2.1  外观模式来解决 用来解决上述问题的一个合理的解决方案就是外观模式.那么什么是外观模式呢? (1)外观模式定义 这里先对两个词进行一下说明,一个是界面,一个是接口. 界 ...

  3. JS常用的设计模式(7)—— 外观模式

    JS常用的设计模式(7)-- 外观模式 外观模式(门面模式),是一种相对简单而又无处不在的模式.外观模式提供一个高层接口,这个接口使得客户端或子系统更加方便调用. 用一段再简单不过的代码来表示 var ...

  4. Swift 中的设计模式 #3 外观模式与适配器模式

    作者:Andrew Jaffee,原文链接,原文日期:2018-09-04 译者:郑一一:校对:BigNerdCoding,pmst,Forelax:定稿:Forelax 本文是我的设计模式系列教程的 ...

  5. 移动开发 | Swift 中的设计模式 #3 外观模式与适配器模式

    本文是我的设计模式系列教程的第三篇.在第一篇文章中,我介绍了 创建型模式中的工厂模式和单例模式.在第二篇文章中,又讨论了一下 行为型模式中的观察者模式和备忘录模式. 在本文中,我会就结构型模式中的外观 ...

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

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

  7. [设计模式C++]外观模式

    系列文章总结一些比较常见的设计模式,外观模式是由GoF提出的23种设计模式的一种,使用非常简单. 2021-09-16 增加一个例子 区别于代理模式,都像是插入第三者,但是外观模式是统筹管理子系统,就 ...

  8. java外观设计修改_Java设计模式之外观模式和装饰器模式的设计(精选)

    前言 本篇来学习下结构型模式的外观模式和装饰器模式. 外观模式 简介 外观模式隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.这种类型的设计模式属于结构型模式,它向现有的系统添加一个接 ...

  9. 深入理解JavaScript系列(30):设计模式之外观模式

    介绍 外观模式(Facade)为子系统中的一组接口提供了一个一致的界面,此模块定义了一个高层接口,这个接口值得这一子系统更加容易使用. 正文 外观模式不仅简化类中的接口,而且对接口与调用者也进行了解耦 ...

最新文章

  1. Vue中去掉表单对象上前后空格
  2. SpringBoot中Tomcat配置(学习SpringBoot实战)
  3. 3.cocos2dx它Menu,由menu为了实现场景切换
  4. [vue] vue中什么是递归组件?举个例子说明下?
  5. 单片机涡轮流量传感器_迅尔仪表|同是涡轮流量计,为什么液体涡轮流量计不能测气体?...
  6. PyCharm下解决Unresolved Reference问题
  7. 用于数据输入的基本WPF窗口功能
  8. springcloud2.0以上版本_eureka控制台显示_找不到${spring.cloud.client.ipAddress}_没有显示成IP地址---springcloud工作笔记165
  9. java 项目心得_读懂JAVA WEB项目的一点心得 | 学步园
  10. 如何在linux centos下安装git(转)
  11. php求两个数组的差值,数组计算差值及项的小计,该如何处理
  12. Unity3d动画脚本 Animation Scripting(深入了解游戏引擎中的动画处理原理)
  13. QQ淘宝自动转链转发机器人MkStone京东淘宝转链助手
  14. 反爬虫绕过初级——添加http header和gzip解压处理
  15. PPT技巧:快速实现照片双重曝光效果
  16. 认识即时通讯开发通信协议之MQTT
  17. CE-RTI开源软件代码学习笔记(一)
  18. 疯狂的二手电商:爱回收偷食闲鱼、转转
  19. python安装mysqldb报错
  20. 谁来拯救中国的语言文学

热门文章

  1. 就医160_就医160app下载_就医160IOS版下载-游戏下载
  2. javascript百炼成仙 第一章 掌握JavaScript基础 1.13 语惊四座
  3. 【维生素C语言】第二章 - 分支和循环
  4. es6数组以及数组对象去重
  5. 3 Hadoop-HDFS分布式⽂件系统
  6. 数据结构与算法【Java版】:第一课
  7. linux 系统优化基础,Linux系统基础优化总结
  8. c 语言文件读写ppt,C/C++ 文件读写
  9. 【多模态】《GATED MULTIMODAL UNITS FOR INFORMATION FUSION》论文阅读笔记
  10. IEEE Access 投稿记录