File: CoffeeMakerFactory.java

Project: Java Mark IV Coffee Maker

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);
  }
}

Used by: TestManualCoffeeMaker


[ Index ][ Presentation ]
Generated by [ source2html ]