[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