外观模式

✍ dations ◷ 2025-10-12 07:37:07 #软件设计模式

外观模式(Facade pattern),是软件工程中常用的一种软件设计模式,它为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用。

FacadeDesignPattern.png

这是一个抽象的示例。一个客户“you”通过外观接口“computer”获取计算机内部复杂的系统信息。

/* Complex parts */class CPU {	public void freeze() { ... }	public void jump(long position) { ... }	public void execute() { ... }}class Memory {	public void load(long position, byte data) {		...	}}class HardDrive {	public byte read(long lba, int size) {		...	}}/* Façade */class Computer {	public void startComputer() {		cpu.freeze();		memory.load(BOOT_ADDRESS, hardDrive.read(BOOT_SECTOR, SECTOR_SIZE));		cpu.jump(BOOT_ADDRESS);		cpu.execute();	}}/* Client */class You {	public static void main(String args) {		Computer facade = new Computer();		facade.startComputer();	}}

C#

// Facade pattern -- Structural example using System;namespace DoFactory.GangOfFour.Facade.Structural{  // Mainapp test application   class MainApp  {    public static void Main()    {      Facade facade = new Facade();      facade.MethodA();      facade.MethodB();      // Wait for user       Console.Read();    }  }  // "Subsystem ClassA"   class SubSystemOne  {    public void MethodOne()    {      Console.WriteLine(" SubSystemOne Method");    }  }  // Subsystem ClassB"   class SubSystemTwo  {    public void MethodTwo()    {      Console.WriteLine(" SubSystemTwo Method");    }  }  // Subsystem ClassC"   class SubSystemThree  {    public void MethodThree()    {      Console.WriteLine(" SubSystemThree Method");    }  }  // Subsystem ClassD"   class SubSystemFour  {    public void MethodFour()    {      Console.WriteLine(" SubSystemFour Method");    }  }  // "Facade"   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("\nMethodA() ---- ");      one.MethodOne();      two.MethodTwo();      four.MethodFour();    }    public void MethodB()    {      Console.WriteLine("\nMethodB() ---- ");      two.MethodTwo();      three.MethodThree();    }  }}

C++

class CPU {public:	void freeze() { ... }	void jump(long position) { ... }	void execute() { ... }}class Memory {public:	void load(long position, char* data) {		...	}}class HardDrive {public:	char* read(long lba, int size) {		...	}}/* Façade */class Computer {public:	void startComputer() {		cpu.freeze();		memory.load(BOOT_ADDRESS, hardDrive.read(BOOT_SECTOR, SECTOR_SIZE));		cpu.jump(BOOT_ADDRESS);		cpu.execute();	}}/* Client */class You {public:	void start(String args) {		Computer facade = new Computer();		facade.startComputer();	}}


相关

  • 酶联免疫吸附试验酶联免疫吸附试验(又称酵素免疫分析法,Enzyme-linked immunosorbent assay (ELISA),简称酶联法)利用抗原抗体之间专一性键结之特性,对检体进行检测;由于结合于固体承载物(一般为塑
  • 理论物理理论物理学(英语:Theoretical physics)通过为现实世界建立数学模型来试图理解所有物理现象的运行机制。通过“物理理论”来条理化、解释、预言物理现象。:9丰富的想像力、精湛
  • Ralph Lauren拉尔夫·劳伦(英语:Ralph Lauren,1939年10月14日-),美国时装设计师与企业经营者;最为人所知的就是他的Polo Ralph Lauren服装品牌。拉尔夫·劳伦出生在美国纽约市布朗克斯区,他的父
  • 霍特普塞海姆威霍特普塞海姆威(希腊语中被称为“Boethos”,包泰斯)是古埃及第二王朝的首位法老。他的名字的意思为“权力引发的欣喜”。霍特普塞海姆威统治期间的情况少为人知。霍特普塞海姆
  • 昏睡病非洲人类锥虫病(法语:Trypanosomiasis africain; 英语:African trypanosomiasis)或称昏睡病、嗜睡病(英语:sleeping sickness),是一种由布氏锥虫(英语:Trypanosoma brucei)引起的寄生虫
  • 全通型量子通讯网量子网络(英语:quantum network),是指在多个通信节点间,利用量子密钥分发进行安全通信的网络。各节点间产生的量子密钥可以对传统的语音、图像以及数字多媒体等通信数据进行加密
  • 1294年1294年的地震摧毁了冰岛许多间歇泉,但盖锡尔与斯特罗柯间歇泉却因此而生。
  • 四圣四圣是个并称用语,指四个数量的“圣”,对于此“圣”又依据不同的语境有不同的含义,如圣人、圣物等。它可以是:
  • 圣塔摩尼卡圣莫尼卡 (英语:Santa Monica)是美国加利福尼亚州洛杉矶县的一个城市,位于太平洋沿岸,洛杉矶市以西,这里是有母亲之路之称的美国66号公路的终点。目前是一个度假胜地和住宅区。201
  • 娄山娄山(1962年1月8日-),出生于黑龙江,籍贯河北承德,是北京油画学会会员。2007年就读于中央美术学院油画第第十五届助教研修班,2009年北京亚洲艺术博览会,油画作品参展;2009年油画人物20