package org.onestepback.markiv;
import org.onestepback.markiv.components.Brewer;
import org.onestepback.markiv.components.Warmer;
import org.onestepback.markiv.components.mock.MockButtonSensor;
import org.onestepback.markiv.components.mock.MockOnOffDevice;
import org.onestepback.markiv.components.mock.MockOpenCloseDevice;
import org.onestepback.markiv.components.mock.MockPotSensor;
import org.onestepback.markiv.components.mock.MockWaterSensor;
import org.onestepback.markiv.devices.ButtonSensor;
import org.onestepback.markiv.devices.OnOffAdapter;
import org.onestepback.markiv.devices.OnOffComposite;
import org.onestepback.markiv.devices.OnOffDevice;
import org.onestepback.markiv.devices.OpenCloseDevice;
import org.onestepback.markiv.devices.PotSensor;
import org.onestepback.markiv.devices.WaterSensor;
public class CoffeeMakerFactory {
private CoffeeMaker myMaker = null;
private InputSensors myInputs = null;
private OutputDevices myOutputs = null;
public CoffeeMaker createCoffeeMaker() {
if (myMaker == null)
createAll();
return myMaker;
}
public InputSensors createInputs() {
if (myInputs == null)
createAll();
return myInputs;
}
public OutputDevices createOutputs() {
if (myOutputs == null)
createAll();
return myOutputs;
}
private void createAll() {
OnOffDevice warmerHeater = new MockOnOffDevice();
PotSensor potSensor = new MockPotSensor();
Warmer warmer = new Warmer(potSensor, warmerHeater);
ButtonSensor startButton = new MockButtonSensor();
WaterSensor tank = new MockWaterSensor();
OnOffDevice indicatorLight = new MockOnOffDevice();
OnOffDevice boilerHeater = new MockOnOffDevice();
OpenCloseDevice reliefValve = new MockOpenCloseDevice();
OnOffDevice valveAdapter = new OnOffAdapter(reliefValve);
OnOffComposite boiler = new OnOffComposite();
boiler.add(valveAdapter);
boiler.add(boilerHeater);
Brewer brewer = new Brewer();
brewer.setButton(startButton);
brewer.setTank(tank);
brewer.setBoiler(boiler);
brewer.setPot(potSensor);
brewer.setLight(indicatorLight);
myMaker = new CoffeeMaker();
myMaker.setBrewer(brewer);
myMaker.setWarmer(warmer);
myInputs = new InputSensors();
myInputs.setPotSensor(potSensor);
myInputs.setStartButton(startButton);
myInputs.setTank(tank);
myOutputs = new OutputDevices();
myOutputs.setWarmerHeater(warmerHeater);
myOutputs.setIndicatorLight(indicatorLight);
myOutputs.setBoilerHeater(boilerHeater);
myOutputs.setReliefValve(reliefValve);
}
}
|