DP: Facade

Facade provides a simplified interface to a complex subsystem. Instead of interacting with multiple modules, the client interacts with one unified interface.

This is widely used in embedded systems to simplify hardware initialization and subsystem control.

  • Simplifies complex subsystems
  • Reduces dependencies

C Example

c
#include <stdio.h>

void initGPIO() { printf("GPIO init\n"); }
void initUART() { printf("UART init\n"); }
void initSPI() { printf("SPI init\n"); }

void systemInit() {
    initGPIO();
    initUART();
    initSPI();
}

int main() {
    systemInit();
}

C++ Example

cpp
#include <iostream>
using namespace std;

class GPIO { public: void init(){ cout<<"GPIO\n"; } };
class UART { public: void init(){ cout<<"UART\n"; } };
class SPI  { public: void init(){ cout<<"SPI\n"; } };

class BoardFacade {
    GPIO gpio;
    UART uart;
    SPI spi;
public:
    void init() {
        gpio.init();
        uart.init();
        spi.init();
    }
};

int main() {
    BoardFacade board;
    board.init();
}