Skip to content

Commit 0499248

Browse files
committed
[refactor] Separate out one method to call actions for workers.
1 parent 0fbb4f4 commit 0499248

File tree

2 files changed

+42
-12
lines changed

2 files changed

+42
-12
lines changed
Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.iluwatar;
22

33
import java.util.ArrayList;
4+
import java.util.Collection;
45
import java.util.List;
56

67
/**
@@ -15,7 +16,7 @@
1516
*/
1617
public class DwarvenGoldmineFacade {
1718

18-
List<DwarvenMineWorker> workers;
19+
private final List<DwarvenMineWorker> workers;
1920

2021
public DwarvenGoldmineFacade() {
2122
workers = new ArrayList<>();
@@ -25,23 +26,20 @@ public DwarvenGoldmineFacade() {
2526
}
2627

2728
public void startNewDay() {
28-
for (DwarvenMineWorker worker : workers) {
29-
worker.wakeUp();
30-
worker.goToMine();
31-
}
29+
makeActions(workers, DwarvenMineWorker.Action.WAKE_UP, DwarvenMineWorker.Action.GO_TO_MINE);
3230
}
3331

3432
public void digOutGold() {
35-
for (DwarvenMineWorker worker : workers) {
36-
worker.work();
37-
}
33+
makeActions(workers, DwarvenMineWorker.Action.WORK);
3834
}
3935

4036
public void endDay() {
41-
for (DwarvenMineWorker worker : workers) {
42-
worker.goHome();
43-
worker.goToSleep();
44-
}
37+
makeActions(workers, DwarvenMineWorker.Action.GO_HOME, DwarvenMineWorker.Action.GO_TO_SLEEP);
4538
}
4639

40+
private void makeActions(Collection<DwarvenMineWorker> workers, DwarvenMineWorker.Action... actions) {
41+
for (DwarvenMineWorker worker : workers) {
42+
worker.action(actions);
43+
}
44+
}
4745
}

facade/src/main/java/com/iluwatar/DwarvenMineWorker.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,40 @@ public void goToMine() {
2323
System.out.println(name() + " goes to the mine.");
2424
}
2525

26+
private void action(Action action) {
27+
switch (action) {
28+
case GO_TO_SLEEP:
29+
goToSleep();
30+
break;
31+
case WAKE_UP:
32+
wakeUp();
33+
break;
34+
case GO_HOME:
35+
goHome();
36+
break;
37+
case GO_TO_MINE:
38+
goToMine();
39+
break;
40+
case WORK:
41+
work();
42+
break;
43+
default:
44+
System.out.println("Undefined action");
45+
break;
46+
}
47+
}
48+
49+
public void action(Action... actions) {
50+
for (Action action : actions) {
51+
action(action);
52+
}
53+
}
54+
2655
public abstract void work();
2756

2857
public abstract String name();
2958

59+
static enum Action {
60+
GO_TO_SLEEP, WAKE_UP, GO_HOME, GO_TO_MINE, WORK
61+
}
3062
}

0 commit comments

Comments
 (0)