Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 520f81d

Browse files
committed
iluwatar#107 Improve JavaDoc for Observer example
1 parent 86c68f9 commit 520f81d

File tree

11 files changed

+208
-156
lines changed

11 files changed

+208
-156
lines changed
Lines changed: 41 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,41 @@
1-
package com.iluwatar.observer;
2-
3-
import com.iluwatar.observer.generic.GHobbits;
4-
import com.iluwatar.observer.generic.GOrcs;
5-
import com.iluwatar.observer.generic.GWeather;
6-
7-
/**
8-
*
9-
* Observer pattern defines one-to-many relationship between objects. The target
10-
* object sends change notifications to its registered observers.
11-
*
12-
*/
13-
public class App {
14-
15-
public static void main(String[] args) {
16-
17-
Weather weather = new Weather();
18-
weather.addObserver(new Orcs());
19-
weather.addObserver(new Hobbits());
20-
21-
weather.timePasses();
22-
weather.timePasses();
23-
weather.timePasses();
24-
weather.timePasses();
25-
26-
// Generic observer inspired by Java Generics and Collection by Naftalin & Wadler
27-
System.out.println("\n--Running generic version--");
28-
GWeather gWeather = new GWeather();
29-
gWeather.addObserver(new GOrcs());
30-
gWeather.addObserver(new GHobbits());
31-
32-
gWeather.timePasses();
33-
gWeather.timePasses();
34-
gWeather.timePasses();
35-
gWeather.timePasses();
36-
37-
}
38-
}
1+
package com.iluwatar.observer;
2+
3+
import com.iluwatar.observer.generic.GHobbits;
4+
import com.iluwatar.observer.generic.GOrcs;
5+
import com.iluwatar.observer.generic.GWeather;
6+
7+
/**
8+
*
9+
* Observer pattern defines one-to-many relationship between objects. The target
10+
* object sends change notifications to its registered observers.
11+
*
12+
*/
13+
public class App {
14+
15+
/**
16+
* Program entry point
17+
* @param args command line args
18+
*/
19+
public static void main(String[] args) {
20+
21+
Weather weather = new Weather();
22+
weather.addObserver(new Orcs());
23+
weather.addObserver(new Hobbits());
24+
25+
weather.timePasses();
26+
weather.timePasses();
27+
weather.timePasses();
28+
weather.timePasses();
29+
30+
// Generic observer inspired by Java Generics and Collection by Naftalin & Wadler
31+
System.out.println("\n--Running generic version--");
32+
GWeather gWeather = new GWeather();
33+
gWeather.addObserver(new GOrcs());
34+
gWeather.addObserver(new GHobbits());
35+
36+
gWeather.timePasses();
37+
gWeather.timePasses();
38+
gWeather.timePasses();
39+
gWeather.timePasses();
40+
}
41+
}
Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,30 @@
1-
package com.iluwatar.observer;
2-
3-
public class Hobbits implements WeatherObserver {
4-
5-
@Override
6-
public void update(WeatherType currentWeather) {
7-
switch (currentWeather) {
8-
case COLD:
9-
System.out.println("The hobbits are shivering in the cold weather.");
10-
break;
11-
case RAINY:
12-
System.out.println("The hobbits look for cover from the rain.");
13-
break;
14-
case SUNNY:
15-
System.out.println("The happy hobbits bade in the warm sun.");
16-
break;
17-
case WINDY:
18-
System.out.println("The hobbits hold their hats tightly in the windy weather.");
19-
break;
20-
default:
21-
break;
22-
}
23-
}
24-
25-
}
1+
package com.iluwatar.observer;
2+
3+
/**
4+
*
5+
* Hobbits
6+
*
7+
*/
8+
public class Hobbits implements WeatherObserver {
9+
10+
@Override
11+
public void update(WeatherType currentWeather) {
12+
switch (currentWeather) {
13+
case COLD:
14+
System.out.println("The hobbits are shivering in the cold weather.");
15+
break;
16+
case RAINY:
17+
System.out.println("The hobbits look for cover from the rain.");
18+
break;
19+
case SUNNY:
20+
System.out.println("The happy hobbits bade in the warm sun.");
21+
break;
22+
case WINDY:
23+
System.out.println("The hobbits hold their hats tightly in the windy weather.");
24+
break;
25+
default:
26+
break;
27+
}
28+
}
29+
30+
}
Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,30 @@
1-
package com.iluwatar.observer;
2-
3-
public class Orcs implements WeatherObserver {
4-
5-
@Override
6-
public void update(WeatherType currentWeather) {
7-
switch (currentWeather) {
8-
case COLD:
9-
System.out.println("The orcs are freezing cold.");
10-
break;
11-
case RAINY:
12-
System.out.println("The orcs are dripping wet.");
13-
break;
14-
case SUNNY:
15-
System.out.println("The sun hurts the orcs' eyes.");
16-
break;
17-
case WINDY:
18-
System.out.println("The orc smell almost vanishes in the wind.");
19-
break;
20-
default:
21-
break;
22-
}
23-
}
24-
25-
}
1+
package com.iluwatar.observer;
2+
3+
/**
4+
*
5+
* Orcs
6+
*
7+
*/
8+
public class Orcs implements WeatherObserver {
9+
10+
@Override
11+
public void update(WeatherType currentWeather) {
12+
switch (currentWeather) {
13+
case COLD:
14+
System.out.println("The orcs are freezing cold.");
15+
break;
16+
case RAINY:
17+
System.out.println("The orcs are dripping wet.");
18+
break;
19+
case SUNNY:
20+
System.out.println("The sun hurts the orcs' eyes.");
21+
break;
22+
case WINDY:
23+
System.out.println("The orc smell almost vanishes in the wind.");
24+
break;
25+
default:
26+
break;
27+
}
28+
}
29+
30+
}
Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,42 @@
1-
package com.iluwatar.observer;
2-
3-
import java.util.ArrayList;
4-
import java.util.List;
5-
6-
/**
7-
*
8-
* Weather can be observed by implementing WeatherObserver interface and
9-
* registering as listener.
10-
*
11-
*/
12-
public class Weather {
13-
14-
private WeatherType currentWeather;
15-
private List<WeatherObserver> observers;
16-
17-
public Weather() {
18-
observers = new ArrayList<>();
19-
currentWeather = WeatherType.SUNNY;
20-
}
21-
22-
public void addObserver(WeatherObserver obs) {
23-
observers.add(obs);
24-
}
25-
26-
public void removeObserver(WeatherObserver obs) {
27-
observers.remove(obs);
28-
}
29-
30-
public void timePasses() {
31-
WeatherType[] enumValues = WeatherType.values();
32-
currentWeather = enumValues[(currentWeather.ordinal() + 1) % enumValues.length];
33-
System.out.println("The weather changed to " + currentWeather + ".");
34-
notifyObservers();
35-
}
36-
37-
private void notifyObservers() {
38-
for (WeatherObserver obs : observers) {
39-
obs.update(currentWeather);
40-
}
41-
}
42-
}
1+
package com.iluwatar.observer;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
/**
7+
*
8+
* Weather can be observed by implementing {@link WeatherObserver} interface and
9+
* registering as listener.
10+
*
11+
*/
12+
public class Weather {
13+
14+
private WeatherType currentWeather;
15+
private List<WeatherObserver> observers;
16+
17+
public Weather() {
18+
observers = new ArrayList<>();
19+
currentWeather = WeatherType.SUNNY;
20+
}
21+
22+
public void addObserver(WeatherObserver obs) {
23+
observers.add(obs);
24+
}
25+
26+
public void removeObserver(WeatherObserver obs) {
27+
observers.remove(obs);
28+
}
29+
30+
public void timePasses() {
31+
WeatherType[] enumValues = WeatherType.values();
32+
currentWeather = enumValues[(currentWeather.ordinal() + 1) % enumValues.length];
33+
System.out.println("The weather changed to " + currentWeather + ".");
34+
notifyObservers();
35+
}
36+
37+
private void notifyObservers() {
38+
for (WeatherObserver obs : observers) {
39+
obs.update(currentWeather);
40+
}
41+
}
42+
}
Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
1-
package com.iluwatar.observer;
2-
3-
public enum WeatherType {
4-
5-
SUNNY, RAINY, WINDY, COLD;
6-
7-
@Override
8-
public String toString() {
9-
return this.name().toLowerCase();
10-
}
11-
12-
}
1+
package com.iluwatar.observer;
2+
3+
/**
4+
*
5+
* WeatherType enumeration
6+
*
7+
*/
8+
public enum WeatherType {
9+
10+
SUNNY, RAINY, WINDY, COLD;
11+
12+
@Override
13+
public String toString() {
14+
return this.name().toLowerCase();
15+
}
16+
17+
}

observer/src/main/java/com/iluwatar/observer/generic/GHobbits.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
import com.iluwatar.observer.WeatherType;
44

5+
/**
6+
*
7+
* GHobbits
8+
*
9+
*/
510
public class GHobbits implements Race {
611
@Override
712
public void update(GWeather weather, WeatherType weatherType) {

observer/src/main/java/com/iluwatar/observer/generic/GOrcs.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,13 @@
22

33
import com.iluwatar.observer.WeatherType;
44

5+
/**
6+
*
7+
* GOrcs
8+
*
9+
*/
510
public class GOrcs implements Race {
11+
612
@Override
713
public void update(GWeather weather, WeatherType weatherType) {
814
switch (weatherType) {

observer/src/main/java/com/iluwatar/observer/generic/GWeather.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
import com.iluwatar.observer.WeatherType;
44

5+
/**
6+
*
7+
* GWeather
8+
*
9+
*/
510
public class GWeather extends Observable<GWeather, Race, WeatherType> {
611

712
private WeatherType currentWeather;

observer/src/main/java/com/iluwatar/observer/generic/Observer.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
package com.iluwatar.observer.generic;
22

3+
/**
4+
*
5+
* Observer
6+
*
7+
* @param <S>
8+
* @param <O>
9+
* @param <A>
10+
*/
311
public interface Observer<S extends Observable<S, O, A>, O extends Observer<S, O, A>, A> {
412

513
void update(S subject, A argument);

observer/src/main/java/com/iluwatar/observer/generic/Race.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,10 @@
22

33
import com.iluwatar.observer.WeatherType;
44

5+
/**
6+
*
7+
* Race
8+
*
9+
*/
510
public interface Race extends Observer<GWeather, Race, WeatherType> {
611
}

0 commit comments

Comments
 (0)