From 04992483a135effa12de50ce2ece5bea75c12468 Mon Sep 17 00:00:00 2001 From: ruslanpa Date: Tue, 10 Feb 2015 09:33:03 +0200 Subject: [PATCH] [refactor] Separate out one method to call actions for workers. --- .../com/iluwatar/DwarvenGoldmineFacade.java | 22 ++++++------- .../java/com/iluwatar/DwarvenMineWorker.java | 32 +++++++++++++++++++ 2 files changed, 42 insertions(+), 12 deletions(-) diff --git a/facade/src/main/java/com/iluwatar/DwarvenGoldmineFacade.java b/facade/src/main/java/com/iluwatar/DwarvenGoldmineFacade.java index fc5af7338..b3a01a3d9 100644 --- a/facade/src/main/java/com/iluwatar/DwarvenGoldmineFacade.java +++ b/facade/src/main/java/com/iluwatar/DwarvenGoldmineFacade.java @@ -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 workers; + private final List 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 workers, DwarvenMineWorker.Action... actions) { + for (DwarvenMineWorker worker : workers) { + worker.action(actions); + } + } } diff --git a/facade/src/main/java/com/iluwatar/DwarvenMineWorker.java b/facade/src/main/java/com/iluwatar/DwarvenMineWorker.java index 27ec4e87b..74ff80984 100644 --- a/facade/src/main/java/com/iluwatar/DwarvenMineWorker.java +++ b/facade/src/main/java/com/iluwatar/DwarvenMineWorker.java @@ -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 + } }