第九章 外观模式

1. 外观模式

定义:通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。

打开家里各种智能设备,研发者只需要提供几种简单选择给用户即可(而非暴露所有的电子特性)

类图:

在这里插入图片描述

2. 示例代码

#include <iostream>
#include <string>
using namespace std;
//符合迪米特法则:一个类尽量少了解其他类
//电视机
class Television {
  public:
    void On() {
        cout << "电视机打开" << endl;
    }
    void Off() {
        cout << "电视机关闭" << endl;
    }
};

//灯
class Light {
  public:
    void On() {
        cout << "灯打开" << endl;
    }
    void Off() {
        cout << "灯关闭" << endl;
    }
};

//音响
class Audio {
  public:
    void On() {
        cout << "音响打开" << endl;
    }
    void Off() {
        cout << "音响关闭" << endl;
    }
};

//麦克风
class Mircophone {
  public:
    void On() {
        cout << "麦克风打开" << endl;
    }
    void Off() {
        cout << "麦克风关闭" << endl;
    }
};

//DVD播放器
class DVDPlayer {
  public:
    void On() {
        cout << "DVD播放器打开" << endl;
    }
    void Off() {
        cout << "DVD播放器关闭" << endl;
    }
};

//游戏机
class GameMachine {
  public:
    void On() {
        cout << "游戏机打开" << endl;
    }
    void Off() {
        cout << "游戏机关闭" << endl;
    }
};

//KTV模式
class KTVMode {
  public:
    KTVMode() {
        pTv = new Television;
        pLight = new Light;
        pAudio = new Audio;
        pMicrophone = new Mircophone;
        pDvd = new DVDPlayer;
    }
    void OnKtv() {
        pTv->On();
        pLight->Off();
        pAudio->On();
        pMicrophone->On();
        pDvd->On();
    }
    void OffKtv() {
        pTv->Off();
        pLight->On();
        pAudio->Off();
        pMicrophone->Off();
        pDvd->Off();
    }
    ~KTVMode() {
        delete pTv;
        delete pLight;
        delete pAudio;
        delete pMicrophone;
        delete pDvd;
    }

    Television* pTv;
    Light* pLight;
    Audio* pAudio;
    Mircophone* pMicrophone;
    DVDPlayer* pDvd;
};

void test01() {
    KTVMode* ktv = new KTVMode;
    ktv->OnKtv();
}

int main() {
    test01();
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值