fbpx
维基百科

外觀模式

外观模式(Facade pattern),是軟件工程中常用的一種軟件設計模式,它為子系統中的一組介面提供一個統一的高層介面,使得子系統更容易使用。

外观模式是一个设计模式 (计算机)中常用的面向对象程序设计. 类似于一个建筑学中的立面. 立面作为一个前端接口来屏蔽更复杂的底层或结构代码。外观模式可以:

  • 通用简化的API屏蔽与更复杂的内部组件和结构, 以提高Software library的可读性和可用性
  • 为更通用的功能提供上下文特定的接口
  • 在广泛更新重构单层系统(Monolithic System)或紧密耦合(tight coupling)的軟件系统, 提供一个简化的启动点,更有利于更多的松耦合(loose coupling)代码

当一个系统非常复杂或难以理解时,开发人员通常会使用 facade 设计模式,因为该系统有许多相互依赖的类,或者因为其源代码不可用。Facade模式隐藏了更大系统的复杂性,为客户端提供了一个更简单的接口。通常会涉及到一个wrapper包含客户端所需的一组成员的。这些成员代表 facade 客户端访问系统并隐藏实现细节。

結構 编辑

 

Facade
這個外觀類為子系統中Packages 1、2、3提供一個共同的對外介面(接口
Clients
客戶對象通過一個外觀介面讀寫子系統中各介面的數據資源
Packages
客戶可以通過外觀介面讀取的内部庫。

示例 编辑

Java 编辑

這是一個抽象的範例。一個客戶“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();  } } 


外觀模式, 此條目需要精通或熟悉相关主题的编者参与及协助编辑, 2012年1月24日, 請邀請適合的人士改善本条目, 更多的細節與詳情請參见討論頁, 此條目没有列出任何参考或来源, 2008年12月1日, 維基百科所有的內容都應該可供查證, 请协助補充可靠来源以改善这篇条目, 无法查证的內容可能會因為異議提出而被移除, 外观模式, facade, pattern, 是軟件工程中常用的一種軟件設計模式, 它為子系統中的一組介面提供一個統一的高層介面, 使得子系統更容易使用, 外观模式是一个设计模式, 计算机, 中常用. 此條目需要精通或熟悉相关主题的编者参与及协助编辑 2012年1月24日 請邀請適合的人士改善本条目 更多的細節與詳情請參见討論頁 此條目没有列出任何参考或来源 2008年12月1日 維基百科所有的內容都應該可供查證 请协助補充可靠来源以改善这篇条目 无法查证的內容可能會因為異議提出而被移除 外观模式 Facade pattern 是軟件工程中常用的一種軟件設計模式 它為子系統中的一組介面提供一個統一的高層介面 使得子系統更容易使用 外观模式是一个设计模式 计算机 中常用的面向对象程序设计 类似于一个建筑学中的立面 立面作为一个前端接口来屏蔽更复杂的底层或结构代码 外观模式可以 通用简化的API屏蔽与更复杂的内部组件和结构 以提高Software library的可读性和可用性 为更通用的功能提供上下文特定的接口在广泛更新重构单层系统 Monolithic System 或紧密耦合 tight coupling 的軟件系统 提供一个简化的启动点 更有利于更多的松耦合 loose coupling 代码当一个系统非常复杂或难以理解时 开发人员通常会使用 facade 设计模式 因为该系统有许多相互依赖的类 或者因为其源代码不可用 Facade模式隐藏了更大系统的复杂性 为客户端提供了一个更简单的接口 通常会涉及到一个wrapper包含客户端所需的一组成员的 这些成员代表 facade 客户端访问系统并隐藏实现细节 目录 1 結構 2 示例 2 1 Java 2 2 C 2 3 C 結構 编辑 nbsp Facade 這個外觀類為子系統中Packages 1 2 3提供一個共同的對外介面 接口 Clients 客戶對象通過一個外觀介面讀寫子系統中各介面的數據資源 Packages 客戶可以通過外觀介面讀取的内部庫 示例 编辑Java 编辑 這是一個抽象的範例 一個客戶 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 Facade 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 Facade 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 取自 https zh wikipedia org w index php title 外觀模式 amp oldid 74532438, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。