现有电器灯泡与风扇,如有一控制开关Switch,能够控制这两种电器,请遵循依赖倒置原则(Dependency Inversion Principle)给出一种合理的设计方案。
时间: 2023-05-20 21:05:19 浏览: 65
一个合理的设计方案是使用面向对象编程中的接口和抽象类。首先,定义一个抽象的电器接口,包含开关和状态查询的方法。然后,定义一个抽象的开关接口,包含控制电器开关的方法。最后,定义具体的电器类(如灯泡和风扇),实现电器接口,并在构造函数中接受开关接口的实例。这样,开关就可以控制不同的电器,而电器也可以被不同的开关控制,实现了依赖倒置原则。以下是示例代码:
```
interface IElectricalAppliance {
void turnOn();
void turnOff();
bool getStatus();
}
interface ISwitch {
void control(IElectricalAppliance appliance);
}
abstract class ElectricalApplianceBase : IElectricalAppliance {
protected bool _status = false;
public void turnOn() {
_status = true;
}
public void turnOff() {
_status = false;
}
public bool getStatus() {
return _status;
}
}
class LightBulb : ElectricalApplianceBase {
public LightBulb(ISwitch switcher) {
switcher.control(this);
}
}
class Fan : ElectricalApplianceBase {
public Fan(ISwitch switcher) {
switcher.control(this);
}
}
class Switch : ISwitch {
private IElectricalAppliance _appliance;
public void control(IElectricalAppliance appliance) {
_appliance = appliance;
}
public void turnOn() {
_appliance.turnOn();
}
public void turnOff() {
_appliance.turnOff();
}
public bool getStatus() {
return _appliance.getStatus();
}
}
```