diff --git a/observer/src/main/java/com/iluwatar/observer/App.java b/observer/src/main/java/com/iluwatar/observer/App.java index bc4742a14..5f03a9e2b 100644 --- a/observer/src/main/java/com/iluwatar/observer/App.java +++ b/observer/src/main/java/com/iluwatar/observer/App.java @@ -6,45 +6,44 @@ import com.iluwatar.observer.generic.GWeather; /** * - * The Observer pattern is a software design pattern in which an object, called - * the subject, maintains a list of its dependents, called observers, and notifies - * them automatically of any state changes, usually by calling one of their methods. - * It is mainly used to implement distributed event handling systems. The Observer - * pattern is also a key part in the familiar model–view–controller (MVC) architectural - * pattern. The Observer pattern is implemented in numerous programming libraries and - * systems, including almost all GUI toolkits. + * The Observer pattern is a software design pattern in which an object, called the subject, + * maintains a list of its dependents, called observers, and notifies them automatically of any + * state changes, usually by calling one of their methods. It is mainly used to implement + * distributed event handling systems. The Observer pattern is also a key part in the familiar + * model–view–controller (MVC) architectural pattern. The Observer pattern is implemented in + * numerous programming libraries and systems, including almost all GUI toolkits. *

- * In this example {@link Weather} has a state that can be observed. The {@link Orcs} - * and {@link Hobbits} register as observers and receive notifications when the - * {@link Weather} changes. + * In this example {@link Weather} has a state that can be observed. The {@link Orcs} and + * {@link Hobbits} register as observers and receive notifications when the {@link Weather} changes. * */ public class App { - /** - * Program entry point - * @param args command line args - */ - public static void main(String[] args) { + /** + * 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 weather = new Weather(); + weather.addObserver(new Orcs()); + weather.addObserver(new Hobbits()); - weather.timePasses(); - weather.timePasses(); - weather.timePasses(); - weather.timePasses(); + 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()); + // 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(); - } + 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 d15ce6109..02baaec83 100644 --- a/observer/src/main/java/com/iluwatar/observer/Hobbits.java +++ b/observer/src/main/java/com/iluwatar/observer/Hobbits.java @@ -7,24 +7,23 @@ 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; - } - } - + @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 26049bf4b..09ca65211 100644 --- a/observer/src/main/java/com/iluwatar/observer/Orcs.java +++ b/observer/src/main/java/com/iluwatar/observer/Orcs.java @@ -7,24 +7,23 @@ 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; - } - } - + @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 c5b03c7a3..634953945 100644 --- a/observer/src/main/java/com/iluwatar/observer/Weather.java +++ b/observer/src/main/java/com/iluwatar/observer/Weather.java @@ -5,38 +5,38 @@ import java.util.List; /** * - * Weather can be observed by implementing {@link WeatherObserver} interface and - * registering as listener. + * Weather can be observed by implementing {@link WeatherObserver} interface and registering as + * listener. * */ public class Weather { - private WeatherType currentWeather; - private List observers; + private WeatherType currentWeather; + private List observers; - public Weather() { - observers = new ArrayList<>(); - currentWeather = WeatherType.SUNNY; - } + public Weather() { + observers = new ArrayList<>(); + currentWeather = WeatherType.SUNNY; + } - public void addObserver(WeatherObserver obs) { - observers.add(obs); - } + public void addObserver(WeatherObserver obs) { + observers.add(obs); + } - public void removeObserver(WeatherObserver obs) { - observers.remove(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(); - } + 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); - } - } + private void notifyObservers() { + for (WeatherObserver obs : observers) { + obs.update(currentWeather); + } + } } diff --git a/observer/src/main/java/com/iluwatar/observer/WeatherObserver.java b/observer/src/main/java/com/iluwatar/observer/WeatherObserver.java index 5491da75e..1293214cd 100644 --- a/observer/src/main/java/com/iluwatar/observer/WeatherObserver.java +++ b/observer/src/main/java/com/iluwatar/observer/WeatherObserver.java @@ -7,6 +7,6 @@ package com.iluwatar.observer; */ public interface WeatherObserver { - void update(WeatherType currentWeather); + void update(WeatherType currentWeather); } diff --git a/observer/src/main/java/com/iluwatar/observer/WeatherType.java b/observer/src/main/java/com/iluwatar/observer/WeatherType.java index 173a53205..c808368cf 100644 --- a/observer/src/main/java/com/iluwatar/observer/WeatherType.java +++ b/observer/src/main/java/com/iluwatar/observer/WeatherType.java @@ -7,11 +7,10 @@ package com.iluwatar.observer; */ public enum WeatherType { - SUNNY, RAINY, WINDY, COLD; - - @Override - public String toString() { - return this.name().toLowerCase(); - } + 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 ec19d68e1..5dca0e779 100644 --- a/observer/src/main/java/com/iluwatar/observer/generic/GHobbits.java +++ b/observer/src/main/java/com/iluwatar/observer/generic/GHobbits.java @@ -8,23 +8,23 @@ import com.iluwatar.observer.WeatherType; * */ public class GHobbits implements Race { - @Override - public void update(GWeather weather, WeatherType weatherType) { - switch (weatherType) { - 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; - } + @Override + public void update(GWeather weather, WeatherType weatherType) { + switch (weatherType) { + 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/generic/GOrcs.java b/observer/src/main/java/com/iluwatar/observer/generic/GOrcs.java index 037b88a1d..b279a78c1 100644 --- a/observer/src/main/java/com/iluwatar/observer/generic/GOrcs.java +++ b/observer/src/main/java/com/iluwatar/observer/generic/GOrcs.java @@ -8,24 +8,24 @@ import com.iluwatar.observer.WeatherType; * */ public class GOrcs implements Race { - - @Override - public void update(GWeather weather, WeatherType weatherType) { - switch (weatherType) { - 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; - } + + @Override + public void update(GWeather weather, WeatherType weatherType) { + switch (weatherType) { + 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/generic/GWeather.java b/observer/src/main/java/com/iluwatar/observer/generic/GWeather.java index cea86bc82..9d1c6ed07 100644 --- a/observer/src/main/java/com/iluwatar/observer/generic/GWeather.java +++ b/observer/src/main/java/com/iluwatar/observer/generic/GWeather.java @@ -9,16 +9,16 @@ import com.iluwatar.observer.WeatherType; */ public class GWeather extends Observable { - private WeatherType currentWeather; + private WeatherType currentWeather; - public GWeather() { - currentWeather = WeatherType.SUNNY; - } + public GWeather() { + currentWeather = WeatherType.SUNNY; + } - public void timePasses() { - WeatherType[] enumValues = WeatherType.values(); - currentWeather = enumValues[(currentWeather.ordinal() + 1) % enumValues.length]; - System.out.println("The weather changed to " + currentWeather + "."); - notifyObservers(currentWeather); - } + public void timePasses() { + WeatherType[] enumValues = WeatherType.values(); + currentWeather = enumValues[(currentWeather.ordinal() + 1) % enumValues.length]; + System.out.println("The weather changed to " + currentWeather + "."); + notifyObservers(currentWeather); + } } diff --git a/observer/src/main/java/com/iluwatar/observer/generic/Observable.java b/observer/src/main/java/com/iluwatar/observer/generic/Observable.java index eaedc7b6e..f1ad2dca6 100644 --- a/observer/src/main/java/com/iluwatar/observer/generic/Observable.java +++ b/observer/src/main/java/com/iluwatar/observer/generic/Observable.java @@ -12,20 +12,20 @@ import java.util.concurrent.CopyOnWriteArrayList; */ public abstract class Observable, O extends Observer, A> { - protected List observers; + protected List observers; - public Observable() { - this.observers = new CopyOnWriteArrayList<>(); - } + public Observable() { + this.observers = new CopyOnWriteArrayList<>(); + } - public void addObserver(O observer) { - this.observers.add(observer); - } + public void addObserver(O observer) { + this.observers.add(observer); + } - @SuppressWarnings("unchecked") - public void notifyObservers(A argument) { - for (O observer : observers) { - observer.update((S) this, argument); - } + @SuppressWarnings("unchecked") + public void notifyObservers(A argument) { + for (O observer : observers) { + observer.update((S) this, argument); } + } } 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 2338f9e98..b01955419 100644 --- a/observer/src/main/java/com/iluwatar/observer/generic/Observer.java +++ b/observer/src/main/java/com/iluwatar/observer/generic/Observer.java @@ -10,5 +10,5 @@ package com.iluwatar.observer.generic; */ public interface Observer, O extends Observer, A> { - void update(S subject, A argument); + void update(S subject, A argument); } diff --git a/observer/src/test/java/com/iluwatar/observer/AppTest.java b/observer/src/test/java/com/iluwatar/observer/AppTest.java index 38d5c0503..65976626d 100644 --- a/observer/src/test/java/com/iluwatar/observer/AppTest.java +++ b/observer/src/test/java/com/iluwatar/observer/AppTest.java @@ -11,9 +11,9 @@ import com.iluwatar.observer.App; */ public class AppTest { - @Test - public void test() { - String[] args = {}; - App.main(args); - } + @Test + public void test() { + String[] args = {}; + App.main(args); + } }