外观模式

✍ dations ◷ 2025-08-28 15:04:51 #软件设计模式

外观模式(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();	}}


相关

  • 限制修饰系统限制修饰系统(英语:Restriction modification system)是一种存在于细菌(可能还有其他原核生物),可保护个体免于外来DNA(如噬菌体)的侵入。有些细菌体内含有限制酶,可将双股DNA切断,之
  • 巴拿马运河区巴拿马运河区(英语:Panama Canal Zone,西班牙语:Zona del Canal de Panamá),是1903年至1979年期间,美国位于巴拿马运河的租借地。运河区包括巴拿马运河本身,以及除巴拿马城与科隆外
  • 细胞色素c氧化酶细胞色素c氧化酶(英语:Cytochrome c oxidase)是一种氧化还原酶,通用名为“细胞色素-c氧化酶”,系统名称为“亚铁细胞色素-c:氧气氧化还原酶”(EC 1.9.3.1)。它是一种存在于细菌或线
  • 女同志女同性恋文学(Lesbian literature)为有关女性同性情欲书写,以及女性同志身份认同的文学作品,其类型涵盖诗歌、散文、戏剧,以及各种文类的小说。历史上有名的女性同性情爱文学作品
  • 苏赫巴托尔省苏赫巴托尔省(蒙古语:Сүхбаатар аймаг,转写:Sükhbaatar aimag)位于蒙古国东部,面积82,287平方公里,人口54,363。首府西乌尔特。省名来自蒙古人民共和国建国领袖苏赫
  • Babesia巴倍虫属(Babesia)是一种血液细胞梨形虫目的单细胞寄生虫,其统称为巴倍虫或焦虫,依赖宿主生存。。这类寄生虫的形状为圆形、杆形或不规则形,并且没有可运动的结构,如纤毛或鞭毛。
  • 亨利·盖茨被捕事件亨利·盖茨被捕事件是一起在美国引发种族歧视争议的事件。2009年7月16日,美国哈佛大学知名黑人教授亨利·盖茨返回麻萨诸塞州剑桥市的自家住所时,因门锁锁死而强行打开大门。
  • 基质 (生物结构)基质(拉丁语:matrix),在生物学是与动物或植物细胞,组织中具更专门的结构,线粒体即是有氧呼吸过程的特定部分。在结缔组织中指细胞外基质。指甲的生活部分称之为甲母质。细胞外基质
  • 仙女圈仙女圈是由地下生长的菌丝体导致的生态现象,通常显示为排列成圆圈生长的菌类,所以又称蘑菇圈。某些地区的人认为是闪电击中地面导致真菌孢子圈状分布进而产生这一现象所以又称
  • 刘定国 (台湾)刘定国(1913年3月17日-1997年3月14日),本名刘玉云,军人及政治人物,苗栗县人,15岁赴日本留学,加入由丘逢甲之子丘念台所创的同乡读书会,并随丘氏前往中国大陆,考入中央陆军官校(黄埔军校