定义:将复杂系统统一起来,提供统一外观,外观简单,便于负责系统对外沟通。
抽象复杂系统到统一外观。
复杂留给自己、简单给对方。
耦合度:
Demo:
FacadePattern.h
#ifndef __FACTORY__PATTERN_H_
#define __FACTORY__PATTERN_H_
//子系统描述
//子系统1
class Memory
{
public:
Memory(){};
~Memory(){};
void selfCheck(){
printf("self check \n");
}
}
//子系统2
class CPU
{
public:
CPU(){};
~CPU(){};
void run(){
printf("CPU RUN");
}
}
// 子系统3
class HardDisk{
public:
HardDisk(){};
~HardDisk(){};
void read(){
printf("hard disk read\n");
}
}
//将复杂子系统统一外观,对外简化操作
class Facade
{
public:
Facade(){
memory = new Memory();
cpu = new CPU();
harddisk = new HradDisk();
};
~Facade(){
delete memory;
delete cpu;
delete harddisk;
};
void PowerOn()
{
printf("Power on\n");
memory->selfCheck();
cpu->run();
harddisk->read();
printf("Power on end \n");
}
private:
Memory* memory;
CPU* cpu;
HardDisk* harddisk;
}
#endif __FACTORY__PATTERN_H_
main.cpp
#include <iostream>
#include "FacadePattern.h"
int main()
{
Facade * facade = new Facad();
facade->powenOn();
delete facade;
return 0;
}
优点:对外统一、简洁、降低耦合度、屏蔽了一些复杂动作。
缺点:增加新的子系统需要修改外观类、违背开闭原则。
整体看,优点大于缺点。get