[refactor] Separate out one method to call actions for workers.
This commit is contained in:
parent
0fbb4f4003
commit
04992483a1
@ -1,6 +1,7 @@
|
||||
package com.iluwatar;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -15,7 +16,7 @@ import java.util.List;
|
||||
*/
|
||||
public class DwarvenGoldmineFacade {
|
||||
|
||||
List<DwarvenMineWorker> workers;
|
||||
private final List<DwarvenMineWorker> workers;
|
||||
|
||||
public DwarvenGoldmineFacade() {
|
||||
workers = new ArrayList<>();
|
||||
@ -25,23 +26,20 @@ public class DwarvenGoldmineFacade {
|
||||
}
|
||||
|
||||
public void startNewDay() {
|
||||
for (DwarvenMineWorker worker : workers) {
|
||||
worker.wakeUp();
|
||||
worker.goToMine();
|
||||
}
|
||||
makeActions(workers, DwarvenMineWorker.Action.WAKE_UP, DwarvenMineWorker.Action.GO_TO_MINE);
|
||||
}
|
||||
|
||||
public void digOutGold() {
|
||||
for (DwarvenMineWorker worker : workers) {
|
||||
worker.work();
|
||||
}
|
||||
makeActions(workers, DwarvenMineWorker.Action.WORK);
|
||||
}
|
||||
|
||||
public void endDay() {
|
||||
for (DwarvenMineWorker worker : workers) {
|
||||
worker.goHome();
|
||||
worker.goToSleep();
|
||||
}
|
||||
makeActions(workers, DwarvenMineWorker.Action.GO_HOME, DwarvenMineWorker.Action.GO_TO_SLEEP);
|
||||
}
|
||||
|
||||
private void makeActions(Collection<DwarvenMineWorker> workers, DwarvenMineWorker.Action... actions) {
|
||||
for (DwarvenMineWorker worker : workers) {
|
||||
worker.action(actions);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,8 +23,40 @@ public abstract class DwarvenMineWorker {
|
||||
System.out.println(name() + " goes to the mine.");
|
||||
}
|
||||
|
||||
private void action(Action action) {
|
||||
switch (action) {
|
||||
case GO_TO_SLEEP:
|
||||
goToSleep();
|
||||
break;
|
||||
case WAKE_UP:
|
||||
wakeUp();
|
||||
break;
|
||||
case GO_HOME:
|
||||
goHome();
|
||||
break;
|
||||
case GO_TO_MINE:
|
||||
goToMine();
|
||||
break;
|
||||
case WORK:
|
||||
work();
|
||||
break;
|
||||
default:
|
||||
System.out.println("Undefined action");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void action(Action... actions) {
|
||||
for (Action action : actions) {
|
||||
action(action);
|
||||
}
|
||||
}
|
||||
|
||||
public abstract void work();
|
||||
|
||||
public abstract String name();
|
||||
|
||||
static enum Action {
|
||||
GO_TO_SLEEP, WAKE_UP, GO_HOME, GO_TO_MINE, WORK
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user