[refactor] Separate out one method to call actions for workers.
This commit is contained in:
		| @@ -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 | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user