外观模式(Facade pattern),是软件工程中常用的一种软件设计模式,它为子系统中的一组接口提供一个统一的高层接口,使得子系统更容易使用。
Facade
这个外观类为子系统中Packages 1、2、3提供一个共同的对外接口
Clients
客户对象通过一个外观接口读写子系统中各接口的数据资源。
Packages
客户可以通过外观接口读取的内部库。
一个抽象的示例。一个客户“you”通过外观接口“computer”获取计算机内部复杂的系统信息。
/*Complex parts*/
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(); }