Skip to content

Commit ca19c3e

Browse files
Merge pull request #4 from ximanta/master
Added eample code of Dependency Inversion Principle
2 parents a6a4391 + 0e6659b commit ca19c3e

File tree

6 files changed

+88
-0
lines changed

6 files changed

+88
-0
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package guru.springframework.blog.dependencyinversionprinciple.highlevel;
2+
3+
4+
public class ElectricPowerSwitch implements Switch {
5+
public Switchable client;
6+
public boolean on;
7+
public ElectricPowerSwitch(Switchable client) {
8+
this.client = client;
9+
this.on = false;
10+
}
11+
public boolean isOn() {
12+
return this.on;
13+
}
14+
public void press(){
15+
boolean checkOn = isOn();
16+
if (checkOn) {
17+
client.turnOff();
18+
this.on = false;
19+
} else {
20+
client.turnOn();
21+
this.on = true;
22+
}
23+
24+
}
25+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package guru.springframework.blog.dependencyinversionprinciple.highlevel;
2+
3+
public interface Switch {
4+
boolean isOn();
5+
void press();
6+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package guru.springframework.blog.dependencyinversionprinciple.highlevel;
2+
3+
public interface Switchable {
4+
void turnOn();
5+
void turnOff();
6+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package guru.springframework.blog.dependencyinversionprinciple.lowlevel;
2+
3+
import guru.springframework.blog.dependencyinversionprinciple.highlevel.Switchable;
4+
5+
public class Fan implements Switchable {
6+
@Override
7+
public void turnOn() {
8+
System.out.println("Fan: Fan turned on...");
9+
}
10+
11+
@Override
12+
public void turnOff() {
13+
System.out.println("Fan: Fan turned off...");
14+
}
15+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package guru.springframework.blog.dependencyinversionprinciple.lowlevel;
2+
3+
import guru.springframework.blog.dependencyinversionprinciple.highlevel.Switchable;
4+
5+
public class LightBulb implements Switchable {
6+
@Override
7+
public void turnOn() {
8+
System.out.println("LightBulb: Bulb turned on...");
9+
}
10+
11+
@Override
12+
public void turnOff() {
13+
System.out.println("LightBulb: Bulb turned off...");
14+
}
15+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package guru.springframework.blog.dependencyinversionprinciple.highlevel;
2+
3+
import guru.springframework.blog.dependencyinversionprinciple.lowlevel.Fan;
4+
import guru.springframework.blog.dependencyinversionprinciple.lowlevel.LightBulb;
5+
import org.junit.Test;
6+
7+
public class ElectricPowerSwitchTest {
8+
9+
@Test
10+
public void testPress() throws Exception {
11+
Switchable switchableBulb=new LightBulb();
12+
Switch bulbPowerSwitch=new ElectricPowerSwitch(switchableBulb);
13+
bulbPowerSwitch.press();
14+
bulbPowerSwitch.press();
15+
16+
Switchable switchableFan=new Fan();
17+
Switch fanPowerSwitch=new ElectricPowerSwitch(switchableFan);
18+
fanPowerSwitch.press();
19+
fanPowerSwitch.press();
20+
}
21+
}

0 commit comments

Comments
 (0)