Skip to content

Instantly share code, notes, and snippets.

@VeganPower
Created July 24, 2017 22:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save VeganPower/cfa88e402bae7bcdced71ba83966a046 to your computer and use it in GitHub Desktop.
Save VeganPower/cfa88e402bae7bcdced71ba83966a046 to your computer and use it in GitHub Desktop.
reply to /u/TheGoodPlaceJanet
class UsbLampManager : public LampManager
{
bool switch_lamp(bool turn_on) override;
};
class BluetoothLampManager : public LampManager
{
bool switch_lamp(bool turn_on) override;
};
class Lamp
{
public:
Lamp(LampManager* mng ) : manager_ptr_(mng){ assert(manager_ptr_ != nullptr); }
bool turn_lamp_on() { manager_ptr_->switch_lamp(true); }
bool turn_lamp_off() { manager_ptr_->switch_lamp(false); }
private:
LampManager* manager_ptr_;
};
void foo()
{
UsbLampManager usb_lamp_manager;
BluetoothLampManager bluethoot_lamp_manager;
Lamp lamp_a(&usb_lamp_manager);
Lamp lamp_b(&bluethoot_lamp_manager);
lamp_b->turn_lamp_on();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment