外观模式

✍ dations ◷ 2025-05-19 19:24:02 #软件设计模式

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


相关

  • 分散系分散系是将一种或一种以上的物质分散到另一种物质所形成的混合体系。前一种物质称为分散相,后一种物质称为分散介质。按照分散质微粒大小,分散系可分为三种:
  • 机构 (工程学)机构(英语:mechanism)或者机制在工程学中是用来传递与变换运动和力的可动装置。机构的基本要素为构件和运动副,以及组成结构运动链。机构学是通过数学、力学和运动学研究各种机
  • 霍尔蒂·米克洛什霍尔蒂·米克洛什(匈牙利语: Horthy Miklós,德语:Nikolaus von Horthy und Nagybánya,1868年6月18日-1957年2月9日),匈牙利的军人与政治人物。1920-1944年为摄政,掌握军政实权。霍尔
  • 浪漫 ~MY DEAR BOY~《浪漫 ~MY DEAR BOY~》(浪漫 ~MY DEAR BOY~)是日本女子音乐组合“早安少女组。”的第23张单曲,于2004年5月12日由zetima发售。
  • 动向指数动向指数(Directional Movement Index,DMI),又称动向指标、趋向指标,由美国机械工程师、技术分析师威勒斯·威尔德(J. Welles Wilder)提出的技术分析方法,其基本原理是股价在上涨及
  • 2A46坦克炮2A46(英语:2A46,俄语:2А46;又称:D-81T(M)/Д-81Т(М);2A46为俄罗斯国防部火箭炮兵装备总局代号)是一系列由前苏联/俄罗斯OKB-9设计局所研制、九号火炮厂(俄语:Завод № 9)所生产的
  • 艾伯特·吉奥索艾伯特·吉奥索(英语:Albert Ghiorso,1915年7月15日-2010年12月26日),生于美国加州瓦列霍,是一位物理学家、美国劳伦斯伯克利国家实验室研究员,他参与了多个元素周期表中的化学元素
  • 林煇焜林煇焜(1902年─1959年),台北淡水(今新北市淡水区)人,曾任淡水信用合作社专务理事、台北市政府机要秘书,著有台湾最早的新闻连载小说《争へぬ运命》(命运难违)。林煇焜出生自淡水望族
  • 比尔·乃尔威廉·法兰西斯·“比尔”·乃尔(英语:William Francis "Bill" Nighy,1949年12月12日-),英国男演员,曾获英国电影学院奖最佳男配角、英国电影学院奖电视类最佳男主角奖。以演舞台剧
  • 国立台湾大学医学院附设医院云林分院国立台湾大学医学院附设医院云林分院是位于台湾云林县的一间综合医院,前身为台湾省立云林医院。