Commit ba9c1924 authored by O'Reilly Media, Inc.'s avatar O'Reilly Media, Inc.
Browse files

Initial commit

parents
Loading
Loading
Loading
Loading
+7 −0
Changes for Design Patterns in Java - Working Files/Chapter 1/No Work Files.rtf: 7 added lines, 0 removed lines.
Original line number Diff line number Diff line
{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\margl1440\margr1440\vieww9000\viewh8400\viewkind0
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural

\f0\fs24 \cf0 No work files for this lesson...}
 No newline at end of file
+36 −0
Changes for Design Patterns in Java - Working Files/Chapter 10/src/com/scispike/observer/client/ObserverThermometerClient.java: 36 added lines, 0 removed lines.
Original line number Diff line number Diff line
package com.scispike.observer.client;

import com.scispike.observer.library.Setup;
import com.scispike.observer.library.Thermometer;


public class ObserverThermometerClient implements java.util.Observer {

	public ObserverThermometerClient() {
	}
	@Override
	public void update(java.util.Observable o, Object args) {
		Thermometer t = (Thermometer) o;
		System.out.println(
				"Checking temprature" 
				+ ": " 
				+ t.getTempratureCelcius()
				+ ", "
				+ t.getTempratureKelvin()
				+ ", "
				+ t.getTemperatureFahrenheit()
		);
	}
	public static void main(String[] args) {
		Setup s = new Setup();
		ObserverThermometerClient client = new ObserverThermometerClient();
		s.getThermometer().addObserver(client);
		try {
			Thread.sleep(20000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		s.shutdown();
	}

}
+34 −0
Changes for Design Patterns in Java - Working Files/Chapter 10/src/com/scispike/observer/client/PollingThermometerClient.java: 34 added lines, 0 removed lines.
Original line number Diff line number Diff line
package com.scispike.observer.client;

import com.scispike.observer.library.Setup;
import com.scispike.observer.library.Thermometer;


public class PollingThermometerClient {
	private final static long SEC_TO_RUN = 20; 
	private final static long MS_BETWEEN_POLLS = 50;
	public static void main(String[] args) {
		Setup s = new Setup();
		Thermometer t = s.getThermometer();
		long count = SEC_TO_RUN * 1000 / MS_BETWEEN_POLLS; 
		try {
			for (int i = 0; i < count; i++) {
				Thread.sleep(MS_BETWEEN_POLLS);
				System.out.println(
						"Checking temprature #" 
						+ i 
						+ ": " 
						+ t.getTempratureCelcius()
						+ ", "
						+ t.getTempratureKelvin()
						+ ", "
						+ t.getTemperatureFahrenheit()
				);
			}
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		s.shutdown();
	}

}
+36 −0
Changes for Design Patterns in Java - Working Files/Chapter 10/src/com/scispike/observer/library/Driver.java: 36 added lines, 0 removed lines.
Original line number Diff line number Diff line
package com.scispike.observer.library;

public class Driver extends Thread {
	public static final long AVERAGE_TIME_BETWEEN_UPDATES_IN_SEC = 5;
	private static final long RANGE_OF_CHANGE = 100;
	public int updateCount = 0;
	private long value = 30000; // initial value... Just a number to make it work OK
	private Thermometer thermometer;
	private boolean shutdown = false;
	public Driver(Thermometer t) {
		this.thermometer = t;
	}
	@Override
	public void run() {
		try {
			while (!this.shutdown) {
				this.value +=  (long) (Math.random() * RANGE_OF_CHANGE) - (RANGE_OF_CHANGE/2);
				this.updateCount++;
				System.out.println(
						"Driver update #" 
				        + this.updateCount 
				        + ": " 
				        + this.value
				);
				this.thermometer.driverValue(this.value);
				Thread.sleep((long) (Math.random() * AVERAGE_TIME_BETWEEN_UPDATES_IN_SEC * 1000));
			}
		}
		catch (Exception e) {
			
		}
	}
	public void shutdown() {
		this.shutdown = true;
	}
}
+23 −0
Changes for Design Patterns in Java - Working Files/Chapter 10/src/com/scispike/observer/library/Observable.java: 23 added lines, 0 removed lines.
Original line number Diff line number Diff line
package com.scispike.observer.library;

import java.util.HashSet;
import java.util.Set;

public abstract class Observable {
	private Set<Observer> observers;
	
	public Observable() {
		this.observers = new HashSet<Observer>();
	}
	public void addObserver(Observer o) {
		this.observers.add(o);
	}
	public void removeObserver(Observer o) {
		this.observers.remove(o);
	}
	protected void notifyDependents() {
		for (Observer observer : observers) {
			observer.update(this);
		}
	}
}
Loading