From 520f81d62ec59cc308bc2cf7344bca52ae9e51c7 Mon Sep 17 00:00:00 2001 From: Ilkka Seppala Date: Fri, 21 Aug 2015 22:28:51 +0300 Subject: [PATCH] #107 Improve JavaDoc for Observer example --- .../main/java/com/iluwatar/observer/App.java | 79 ++++++++--------- .../java/com/iluwatar/observer/Hobbits.java | 55 ++++++------ .../main/java/com/iluwatar/observer/Orcs.java | 55 ++++++------ .../java/com/iluwatar/observer/Weather.java | 84 +++++++++---------- .../com/iluwatar/observer/WeatherType.java | 29 ++++--- .../iluwatar/observer/generic/GHobbits.java | 5 ++ .../com/iluwatar/observer/generic/GOrcs.java | 6 ++ .../iluwatar/observer/generic/GWeather.java | 5 ++ .../iluwatar/observer/generic/Observer.java | 8 ++ .../com/iluwatar/observer/generic/Race.java | 5 ++ .../java/com/iluwatar/observer/AppTest.java | 33 ++++---- 11 files changed, 208 insertions(+), 156 deletions(-) diff --git a/observer/src/main/java/com/iluwatar/observer/App.java b/observer/src/main/java/com/iluwatar/observer/App.java index 9d97084c8..bd99da841 100644 --- a/observer/src/main/java/com/iluwatar/observer/App.java +++ b/observer/src/main/java/com/iluwatar/observer/App.java @@ -1,38 +1,41 @@ -package com.iluwatar.observer; - -import com.iluwatar.observer.generic.GHobbits; -import com.iluwatar.observer.generic.GOrcs; -import com.iluwatar.observer.generic.GWeather; - -/** - * - * Observer pattern defines one-to-many relationship between objects. The target - * object sends change notifications to its registered observers. - * - */ -public class App { - - public static void main(String[] args) { - - Weather weather = new Weather(); - weather.addObserver(new Orcs()); - weather.addObserver(new Hobbits()); - - weather.timePasses(); - weather.timePasses(); - weather.timePasses(); - weather.timePasses(); - - // Generic observer inspired by Java Generics and Collection by Naftalin & Wadler - System.out.println("\n--Running generic version--"); - GWeather gWeather = new GWeather(); - gWeather.addObserver(new GOrcs()); - gWeather.addObserver(new GHobbits()); - - gWeather.timePasses(); - gWeather.timePasses(); - gWeather.timePasses(); - gWeather.timePasses(); - - } -} +package com.iluwatar.observer; + +import com.iluwatar.observer.generic.GHobbits; +import com.iluwatar.observer.generic.GOrcs; +import com.iluwatar.observer.generic.GWeather; + +/** + * + * Observer pattern defines one-to-many relationship between objects. The target + * object sends change notifications to its registered observers. + * + */ +public class App { + + /** + * Program entry point + * @param args command line args + */ + public static void main(String[] args) { + + Weather weather = new Weather(); + weather.addObserver(new Orcs()); + weather.addObserver(new Hobbits()); + + weather.timePasses(); + weather.timePasses(); + weather.timePasses(); + weather.timePasses(); + + // Generic observer inspired by Java Generics and Collection by Naftalin & Wadler + System.out.println("\n--Running generic version--"); + GWeather gWeather = new GWeather(); + gWeather.addObserver(new GOrcs()); + gWeather.addObserver(new GHobbits()); + + gWeather.timePasses(); + gWeather.timePasses(); + gWeather.timePasses(); + gWeather.timePasses(); + } +} diff --git a/observer/src/main/java/com/iluwatar/observer/Hobbits.java b/observer/src/main/java/com/iluwatar/observer/Hobbits.java index b8a4f5b4f..d15ce6109 100644 --- a/observer/src/main/java/com/iluwatar/observer/Hobbits.java +++ b/observer/src/main/java/com/iluwatar/observer/Hobbits.java @@ -1,25 +1,30 @@ -package com.iluwatar.observer; - -public class Hobbits implements WeatherObserver { - - @Override - public void update(WeatherType currentWeather) { - switch (currentWeather) { - case COLD: - System.out.println("The hobbits are shivering in the cold weather."); - break; - case RAINY: - System.out.println("The hobbits look for cover from the rain."); - break; - case SUNNY: - System.out.println("The happy hobbits bade in the warm sun."); - break; - case WINDY: - System.out.println("The hobbits hold their hats tightly in the windy weather."); - break; - default: - break; - } - } - -} +package com.iluwatar.observer; + +/** + * + * Hobbits + * + */ +public class Hobbits implements WeatherObserver { + + @Override + public void update(WeatherType currentWeather) { + switch (currentWeather) { + case COLD: + System.out.println("The hobbits are shivering in the cold weather."); + break; + case RAINY: + System.out.println("The hobbits look for cover from the rain."); + break; + case SUNNY: + System.out.println("The happy hobbits bade in the warm sun."); + break; + case WINDY: + System.out.println("The hobbits hold their hats tightly in the windy weather."); + break; + default: + break; + } + } + +} diff --git a/observer/src/main/java/com/iluwatar/observer/Orcs.java b/observer/src/main/java/com/iluwatar/observer/Orcs.java index 0e51ab450..26049bf4b 100644 --- a/observer/src/main/java/com/iluwatar/observer/Orcs.java +++ b/observer/src/main/java/com/iluwatar/observer/Orcs.java @@ -1,25 +1,30 @@ -package com.iluwatar.observer; - -public class Orcs implements WeatherObserver { - - @Override - public void update(WeatherType currentWeather) { - switch (currentWeather) { - case COLD: - System.out.println("The orcs are freezing cold."); - break; - case RAINY: - System.out.println("The orcs are dripping wet."); - break; - case SUNNY: - System.out.println("The sun hurts the orcs' eyes."); - break; - case WINDY: - System.out.println("The orc smell almost vanishes in the wind."); - break; - default: - break; - } - } - -} +package com.iluwatar.observer; + +/** + * + * Orcs + * + */ +public class Orcs implements WeatherObserver { + + @Override + public void update(WeatherType currentWeather) { + switch (currentWeather) { + case COLD: + System.out.println("The orcs are freezing cold."); + break; + case RAINY: + System.out.println("The orcs are dripping wet."); + break; + case SUNNY: + System.out.println("The sun hurts the orcs' eyes."); + break; + case WINDY: + System.out.println("The orc smell almost vanishes in the wind."); + break; + default: + break; + } + } + +} diff --git a/observer/src/main/java/com/iluwatar/observer/Weather.java b/observer/src/main/java/com/iluwatar/observer/Weather.java index 32ff13d03..c5b03c7a3 100644 --- a/observer/src/main/java/com/iluwatar/observer/Weather.java +++ b/observer/src/main/java/com/iluwatar/observer/Weather.java @@ -1,42 +1,42 @@ -package com.iluwatar.observer; - -import java.util.ArrayList; -import java.util.List; - -/** - * - * Weather can be observed by implementing WeatherObserver interface and - * registering as listener. - * - */ -public class Weather { - - private WeatherType currentWeather; - private List observers; - - public Weather() { - observers = new ArrayList<>(); - currentWeather = WeatherType.SUNNY; - } - - public void addObserver(WeatherObserver obs) { - observers.add(obs); - } - - public void removeObserver(WeatherObserver obs) { - observers.remove(obs); - } - - public void timePasses() { - WeatherType[] enumValues = WeatherType.values(); - currentWeather = enumValues[(currentWeather.ordinal() + 1) % enumValues.length]; - System.out.println("The weather changed to " + currentWeather + "."); - notifyObservers(); - } - - private void notifyObservers() { - for (WeatherObserver obs : observers) { - obs.update(currentWeather); - } - } -} +package com.iluwatar.observer; + +import java.util.ArrayList; +import java.util.List; + +/** + * + * Weather can be observed by implementing {@link WeatherObserver} interface and + * registering as listener. + * + */ +public class Weather { + + private WeatherType currentWeather; + private List observers; + + public Weather() { + observers = new ArrayList<>(); + currentWeather = WeatherType.SUNNY; + } + + public void addObserver(WeatherObserver obs) { + observers.add(obs); + } + + public void removeObserver(WeatherObserver obs) { + observers.remove(obs); + } + + public void timePasses() { + WeatherType[] enumValues = WeatherType.values(); + currentWeather = enumValues[(currentWeather.ordinal() + 1) % enumValues.length]; + System.out.println("The weather changed to " + currentWeather + "."); + notifyObservers(); + } + + private void notifyObservers() { + for (WeatherObserver obs : observers) { + obs.update(currentWeather); + } + } +} diff --git a/observer/src/main/java/com/iluwatar/observer/WeatherType.java b/observer/src/main/java/com/iluwatar/observer/WeatherType.java index b16c3cc04..173a53205 100644 --- a/observer/src/main/java/com/iluwatar/observer/WeatherType.java +++ b/observer/src/main/java/com/iluwatar/observer/WeatherType.java @@ -1,12 +1,17 @@ -package com.iluwatar.observer; - -public enum WeatherType { - - SUNNY, RAINY, WINDY, COLD; - - @Override - public String toString() { - return this.name().toLowerCase(); - } - -} +package com.iluwatar.observer; + +/** + * + * WeatherType enumeration + * + */ +public enum WeatherType { + + SUNNY, RAINY, WINDY, COLD; + + @Override + public String toString() { + return this.name().toLowerCase(); + } + +} diff --git a/observer/src/main/java/com/iluwatar/observer/generic/GHobbits.java b/observer/src/main/java/com/iluwatar/observer/generic/GHobbits.java index 78caefbcf..ec19d68e1 100644 --- a/observer/src/main/java/com/iluwatar/observer/generic/GHobbits.java +++ b/observer/src/main/java/com/iluwatar/observer/generic/GHobbits.java @@ -2,6 +2,11 @@ package com.iluwatar.observer.generic; import com.iluwatar.observer.WeatherType; +/** + * + * GHobbits + * + */ public class GHobbits implements Race { @Override public void update(GWeather weather, WeatherType weatherType) { diff --git a/observer/src/main/java/com/iluwatar/observer/generic/GOrcs.java b/observer/src/main/java/com/iluwatar/observer/generic/GOrcs.java index 97518ee10..037b88a1d 100644 --- a/observer/src/main/java/com/iluwatar/observer/generic/GOrcs.java +++ b/observer/src/main/java/com/iluwatar/observer/generic/GOrcs.java @@ -2,7 +2,13 @@ package com.iluwatar.observer.generic; import com.iluwatar.observer.WeatherType; +/** + * + * GOrcs + * + */ public class GOrcs implements Race { + @Override public void update(GWeather weather, WeatherType weatherType) { switch (weatherType) { diff --git a/observer/src/main/java/com/iluwatar/observer/generic/GWeather.java b/observer/src/main/java/com/iluwatar/observer/generic/GWeather.java index c4702542c..cea86bc82 100644 --- a/observer/src/main/java/com/iluwatar/observer/generic/GWeather.java +++ b/observer/src/main/java/com/iluwatar/observer/generic/GWeather.java @@ -2,6 +2,11 @@ package com.iluwatar.observer.generic; import com.iluwatar.observer.WeatherType; +/** + * + * GWeather + * + */ public class GWeather extends Observable { private WeatherType currentWeather; diff --git a/observer/src/main/java/com/iluwatar/observer/generic/Observer.java b/observer/src/main/java/com/iluwatar/observer/generic/Observer.java index 901930de8..2338f9e98 100644 --- a/observer/src/main/java/com/iluwatar/observer/generic/Observer.java +++ b/observer/src/main/java/com/iluwatar/observer/generic/Observer.java @@ -1,5 +1,13 @@ package com.iluwatar.observer.generic; +/** + * + * Observer + * + * @param + * @param + * @param + */ public interface Observer, O extends Observer, A> { void update(S subject, A argument); diff --git a/observer/src/main/java/com/iluwatar/observer/generic/Race.java b/observer/src/main/java/com/iluwatar/observer/generic/Race.java index 358b27758..ddc3337cb 100644 --- a/observer/src/main/java/com/iluwatar/observer/generic/Race.java +++ b/observer/src/main/java/com/iluwatar/observer/generic/Race.java @@ -2,5 +2,10 @@ package com.iluwatar.observer.generic; import com.iluwatar.observer.WeatherType; +/** + * + * Race + * + */ public interface Race extends Observer { } diff --git a/observer/src/test/java/com/iluwatar/observer/AppTest.java b/observer/src/test/java/com/iluwatar/observer/AppTest.java index 9e208ce66..38d5c0503 100644 --- a/observer/src/test/java/com/iluwatar/observer/AppTest.java +++ b/observer/src/test/java/com/iluwatar/observer/AppTest.java @@ -1,14 +1,19 @@ -package com.iluwatar.observer; - -import org.junit.Test; - -import com.iluwatar.observer.App; - -public class AppTest { - - @Test - public void test() { - String[] args = {}; - App.main(args); - } -} +package com.iluwatar.observer; + +import org.junit.Test; + +import com.iluwatar.observer.App; + +/** + * + * Application test + * + */ +public class AppTest { + + @Test + public void test() { + String[] args = {}; + App.main(args); + } +}