← 返回博客列表

模式特点

为子系统中的一组接口提供一个一致的界面(外观),外观模式定义了一个高层接口,使得子系统更容易使用。

类图

类图

应用场景

示例代码(C++)

// 子系统A - 电源管理
class PowerSystem {
public: void powerOn() { std::cout << "电源上电" << std::endl; }
         void powerOff() { std::cout << "电源断电" << std::endl; }};

// 子系统B - 运动控制
class MotionSystem {
public: void init() { std::cout << "运动控制初始化" << std::endl; }
         void moveToHome() { std::cout << "回零位" << std::endl; }};

// 子系统C - 安全监控
class SafetySystem {
public: void check() { std::cout << "安全检查通过" << std::endl; }
         void enable() { std::cout << "安全监控启用" << std::endl; }};

// 外观 - 机器人启动
class RobotFacade {
    PowerSystem power;
    MotionSystem motion;
    SafetySystem safety;
public:
    void startup() {  // 一键启动
        power.powerOn();
        safety.check();
        safety.enable();
        motion.init();
        motion.moveToHome();
        std::cout << "=== 机器人启动完成 ===" << std::endl;
    }
    void shutdown() {  // 一键关机
        motion.moveToHome();
        power.powerOff();
        std::cout << "=== 机器人已关机 ===" << std::endl;
    }
};

// 客户端:只需调用外观接口
RobotFacade robot;
robot.startup();   // 无需关心三个子系统的调用顺序