外观模式

✍ dations ◷ 2025-10-20 17:29:30 #软件设计模式

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


相关

  • O-18氧-18,为氧的同位素,有8个质子和10个中子,在氧化态为0时,则有8个电子,丰度为大约0.21%,占地壳含量约0.1%。
  • 1129年重要事件及趋势重要人物
  • 霍尔丹弗雷德里克·邓肯·迈克尔·霍尔丹,FRS(英语:Frederick Duncan Michael Haldane,1951年9月14日-),英裔美国物理学家,现任普林斯顿大学物理学系尤金·希金斯物理学教授。他因“在物质
  • 失范失范(Anomie,或译无规范、迷乱)是社会学术语,指现代化过程中,因传统价值和传统社会规范遭到削弱、破坏、乃至瓦解,所导致的社会成员心理上失去价值指引、价值观瓦解的无序状态。在
  • 异化异化定义为相同或相似的事物变为不相同、不相似的过程。它可以指:
  • 玻利维亚总统多民族玻利维亚国总统(the President of the Plurinational State of Bolivia)是多民族玻利维亚国的国家元首和政府首脑。依据2009年开始施行的《玻利维亚宪法》和相关法律的
  • 沈有容谕退红毛番碑“沈有容谕退红毛番韦麻郎等”为台湾现存年代最早的石碑,碑题“红毛番”指的是荷兰人。目前保存于台湾澎湖县马公市澎湖天后宫。此碑于大正八年(1919年)被发现前,台、澎地区最古
  • 加拿大权利与自由宪章第16.1条加拿大权利与自由宪章第16.1条是宪章中最新的一条。它是由《1993年宪法修正案(新不伦瑞克)》加入的。这一宪法条文保证了在新不伦瑞克省的英语人群和法语人群有着平等的社会权
  • 乔治·卡夫坦乔治·A·卡夫坦(英语:George A. Kaftan,1928年2月22日-2018年10月6日),美国NBA联盟职业篮球运动员。
  • 长辈甜心《长辈甜心》(英文:Super Senior),新加坡新传媒私人有限公司时装电视剧,由朱厚任、向云、王昱清、洪慧芳、陈澍城、刘谦益及金银姬领衔主演,监制为苏美莲。于2015年6月18日起于新