mirror of
https://github.com/huihut/interview.git
synced 2024-03-22 13:10:48 +08:00
54 lines
1.2 KiB
C
54 lines
1.2 KiB
C
|
//
|
||
|
// Created by xiemenghui on 2018/7/21.
|
||
|
//
|
||
|
|
||
|
#ifndef DESIGNPATTERN_REFINED_ABSTRACTION_H
|
||
|
#define DESIGNPATTERN_REFINED_ABSTRACTION_H
|
||
|
|
||
|
#include "abstraction.h"
|
||
|
#include <iostream>
|
||
|
|
||
|
// 拉链式开关
|
||
|
class PullChainSwitch : public ISwitch
|
||
|
{
|
||
|
public:
|
||
|
PullChainSwitch(IElectricalEquipment *ee) : ISwitch(ee) {}
|
||
|
|
||
|
// 用拉链式开关打开电器
|
||
|
virtual void On() override
|
||
|
{
|
||
|
std::cout << "Switch on the equipment with a pull chain switch." << std::endl;
|
||
|
m_pEe->PowerOn();
|
||
|
}
|
||
|
|
||
|
// 用拉链式开关关闭电器
|
||
|
virtual void Off() override
|
||
|
{
|
||
|
std::cout << "Switch off the equipment with a pull chain switch." << std::endl;
|
||
|
m_pEe->PowerOff();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
// 两位开关
|
||
|
class TwoPositionSwitch : public ISwitch
|
||
|
{
|
||
|
public:
|
||
|
TwoPositionSwitch(IElectricalEquipment *ee) : ISwitch(ee) {}
|
||
|
|
||
|
// 用两位开关打开电器
|
||
|
virtual void On() override
|
||
|
{
|
||
|
std::cout << "Switch on the equipment with a two-position switch." << std::endl;
|
||
|
m_pEe->PowerOn();
|
||
|
}
|
||
|
|
||
|
// 用两位开关关闭电器
|
||
|
virtual void Off() override {
|
||
|
std::cout << "Switch off the equipment with a two-position switch." << std::endl;
|
||
|
m_pEe->PowerOff();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif //DESIGNPATTERN_REFINED_ABSTRACTION_H
|