Personal knowledge based for Tech, Interviews and many more.
This project is maintained by im-Rajat
// High-level module
class LightSwitch {
private Bulb bulb;
public LightSwitch() {
this.bulb = new LEDBulb(); // High-level module depends on a specific low-level module
}
public void turnOn() {
bulb.turnOn();
}
public void turnOff() {
bulb.turnOff();
}
}
// Low-level module
class LEDBulb {
public void turnOn() {
// Code to turn on an LED bulb
}
public void turnOff() {
// Code to turn off an LED bulb
}
}
// High-level module
class LightSwitch {
private Bulb bulb;
public LightSwitch(Bulb bulb) {
this.bulb = bulb; // High-level module depends on an abstraction
}
public void turnOn() {
bulb.turnOn();
}
public void turnOff() {
bulb.turnOff();
}
}
// Abstraction (Interface)
interface Bulb {
void turnOn();
void turnOff();
}
// Low-level modules implementing the abstraction
class LEDBulb implements Bulb {
public void turnOn() {
// Code to turn on an LED bulb
}
public void turnOff() {
// Code to turn off an LED bulb
}
}
class CFLBulb implements Bulb {
public void turnOn() {
// Code to turn on an CFL bulb
}
public void turnOff() {
// Code to turn off an CFL bulb
}
}