Merge pull request #1475 from ravening/simplify_observer
Use enums instead os switch blocks
This commit is contained in:
commit
0ead283f55
@ -46,22 +46,7 @@ public class Orcs implements WeatherObserver {
|
||||
|
||||
@Override
|
||||
public void update(WeatherType currentWeather) {
|
||||
switch (currentWeather) {
|
||||
case COLD:
|
||||
LOGGER.info("The orcs are freezing cold.");
|
||||
break;
|
||||
case RAINY:
|
||||
LOGGER.info("The orcs are dripping wet.");
|
||||
break;
|
||||
case SUNNY:
|
||||
LOGGER.info("The sun hurts the orcs' eyes.");
|
||||
break;
|
||||
case WINDY:
|
||||
LOGGER.info("The orc smell almost vanishes in the wind.");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
LOGGER.info("The hobbits are facing " + currentWeather.getDescription() + " weather now");
|
||||
}
|
||||
}
|
||||
|
||||
@ -72,21 +57,7 @@ public class Hobbits implements WeatherObserver {
|
||||
@Override
|
||||
public void update(WeatherType currentWeather) {
|
||||
switch (currentWeather) {
|
||||
case COLD:
|
||||
LOGGER.info("The hobbits are shivering in the cold weather.");
|
||||
break;
|
||||
case RAINY:
|
||||
LOGGER.info("The hobbits look for cover from the rain.");
|
||||
break;
|
||||
case SUNNY:
|
||||
LOGGER.info("The happy hobbits bade in the warm sun.");
|
||||
break;
|
||||
case WINDY:
|
||||
LOGGER.info("The hobbits hold their hats tightly in the windy weather.");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
LOGGER.info("The hobbits are facing " + currentWeather.getDescription() + " weather now");
|
||||
}
|
||||
}
|
||||
```
|
||||
@ -141,20 +112,20 @@ Here's the full example in action.
|
||||
|
||||
weather.timePasses();
|
||||
// The weather changed to rainy.
|
||||
// The orcs are dripping wet.
|
||||
// The hobbits look for cover from the rain.
|
||||
// The orcs are facing rainy weather now
|
||||
// The hobbits are facing rainy weather now
|
||||
weather.timePasses();
|
||||
// The weather changed to windy.
|
||||
// The orc smell almost vanishes in the wind.
|
||||
// The hobbits hold their hats tightly in the windy weather.
|
||||
// The orcs are facing windy weather now
|
||||
// The hobbits are facing windy weather now
|
||||
weather.timePasses();
|
||||
// The weather changed to cold.
|
||||
// The orcs are freezing cold.
|
||||
// The hobbits are shivering in the cold weather.
|
||||
// The orcs are facing cold weather now
|
||||
// The hobbits are facing cold weather now
|
||||
weather.timePasses();
|
||||
// The weather changed to sunny.
|
||||
// The sun hurts the orcs' eyes.
|
||||
// The happy hobbits bade in the warm sun.
|
||||
// The orcs are facing sunny weather now
|
||||
// The hobbits are facing sunny weather now
|
||||
```
|
||||
|
||||
## Class diagram
|
||||
|
@ -33,7 +33,9 @@ package com.iluwatar.observer {
|
||||
+ RAINY {static}
|
||||
+ SUNNY {static}
|
||||
+ WINDY {static}
|
||||
+ description String
|
||||
+ toString() : String
|
||||
+ getDescription() : String
|
||||
+ valueOf(name : String) : WeatherType {static}
|
||||
+ values() : WeatherType[] {static}
|
||||
}
|
||||
|
BIN
observer/etc/observer_with_generics.png
Normal file
BIN
observer/etc/observer_with_generics.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 102 KiB |
@ -35,21 +35,6 @@ public class Hobbits implements WeatherObserver {
|
||||
|
||||
@Override
|
||||
public void update(WeatherType currentWeather) {
|
||||
switch (currentWeather) {
|
||||
case COLD:
|
||||
LOGGER.info("The hobbits are shivering in the cold weather.");
|
||||
break;
|
||||
case RAINY:
|
||||
LOGGER.info("The hobbits look for cover from the rain.");
|
||||
break;
|
||||
case SUNNY:
|
||||
LOGGER.info("The happy hobbits bade in the warm sun.");
|
||||
break;
|
||||
case WINDY:
|
||||
LOGGER.info("The hobbits hold their hats tightly in the windy weather.");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
LOGGER.info("The hobbits are facing " + currentWeather.getDescription() + " weather now");
|
||||
}
|
||||
}
|
||||
|
@ -35,21 +35,6 @@ public class Orcs implements WeatherObserver {
|
||||
|
||||
@Override
|
||||
public void update(WeatherType currentWeather) {
|
||||
switch (currentWeather) {
|
||||
case COLD:
|
||||
LOGGER.info("The orcs are freezing cold.");
|
||||
break;
|
||||
case RAINY:
|
||||
LOGGER.info("The orcs are dripping wet.");
|
||||
break;
|
||||
case SUNNY:
|
||||
LOGGER.info("The sun hurts the orcs' eyes.");
|
||||
break;
|
||||
case WINDY:
|
||||
LOGGER.info("The orc smell almost vanishes in the wind.");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
LOGGER.info("The orcs are facing " + currentWeather.getDescription() + " weather now");
|
||||
}
|
||||
}
|
||||
|
@ -28,7 +28,20 @@ package com.iluwatar.observer;
|
||||
*/
|
||||
public enum WeatherType {
|
||||
|
||||
SUNNY, RAINY, WINDY, COLD;
|
||||
SUNNY("Sunny"),
|
||||
RAINY("Rainy"),
|
||||
WINDY("Windy"),
|
||||
COLD("Cold");
|
||||
|
||||
private final String description;
|
||||
|
||||
WeatherType(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return this.description;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
|
@ -36,21 +36,6 @@ public class GHobbits implements Race {
|
||||
|
||||
@Override
|
||||
public void update(GWeather weather, WeatherType weatherType) {
|
||||
switch (weatherType) {
|
||||
case COLD:
|
||||
LOGGER.info("The hobbits are shivering in the cold weather.");
|
||||
break;
|
||||
case RAINY:
|
||||
LOGGER.info("The hobbits look for cover from the rain.");
|
||||
break;
|
||||
case SUNNY:
|
||||
LOGGER.info("The happy hobbits bade in the warm sun.");
|
||||
break;
|
||||
case WINDY:
|
||||
LOGGER.info("The hobbits hold their hats tightly in the windy weather.");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
LOGGER.info("The hobbits are facing " + weatherType.getDescription() + " weather now");
|
||||
}
|
||||
}
|
||||
|
@ -36,21 +36,6 @@ public class GOrcs implements Race {
|
||||
|
||||
@Override
|
||||
public void update(GWeather weather, WeatherType weatherType) {
|
||||
switch (weatherType) {
|
||||
case COLD:
|
||||
LOGGER.info("The orcs are freezing cold.");
|
||||
break;
|
||||
case RAINY:
|
||||
LOGGER.info("The orcs are dripping wet.");
|
||||
break;
|
||||
case SUNNY:
|
||||
LOGGER.info("The sun hurts the orcs' eyes.");
|
||||
break;
|
||||
case WINDY:
|
||||
LOGGER.info("The orc smell almost vanishes in the wind.");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
LOGGER.info("The orcs are facing " + weatherType.getDescription() + " weather now");
|
||||
}
|
||||
}
|
||||
|
@ -36,10 +36,10 @@ public class HobbitsTest extends WeatherObserverTest<Hobbits> {
|
||||
@Override
|
||||
public Collection<Object[]> dataProvider() {
|
||||
return List.of(
|
||||
new Object[]{WeatherType.SUNNY, "The happy hobbits bade in the warm sun."},
|
||||
new Object[]{WeatherType.RAINY, "The hobbits look for cover from the rain."},
|
||||
new Object[]{WeatherType.WINDY, "The hobbits hold their hats tightly in the windy weather."},
|
||||
new Object[]{WeatherType.COLD, "The hobbits are shivering in the cold weather."});
|
||||
new Object[]{WeatherType.SUNNY, "The hobbits are facing Sunny weather now"},
|
||||
new Object[]{WeatherType.RAINY, "The hobbits are facing Rainy weather now"},
|
||||
new Object[]{WeatherType.WINDY, "The hobbits are facing Windy weather now"},
|
||||
new Object[]{WeatherType.COLD, "The hobbits are facing Cold weather now"});
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -36,10 +36,10 @@ public class OrcsTest extends WeatherObserverTest<Orcs> {
|
||||
@Override
|
||||
public Collection<Object[]> dataProvider() {
|
||||
return List.of(
|
||||
new Object[]{WeatherType.SUNNY, "The sun hurts the orcs' eyes."},
|
||||
new Object[]{WeatherType.RAINY, "The orcs are dripping wet."},
|
||||
new Object[]{WeatherType.WINDY, "The orc smell almost vanishes in the wind."},
|
||||
new Object[]{WeatherType.COLD, "The orcs are freezing cold."});
|
||||
new Object[]{WeatherType.SUNNY, "The orcs are facing Sunny weather now"},
|
||||
new Object[]{WeatherType.RAINY, "The orcs are facing Rainy weather now"},
|
||||
new Object[]{WeatherType.WINDY, "The orcs are facing Windy weather now"},
|
||||
new Object[]{WeatherType.COLD, "The orcs are facing Cold weather now"});
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -38,10 +38,10 @@ public class GHobbitsTest extends ObserverTest<GHobbits> {
|
||||
@Override
|
||||
public Collection<Object[]> dataProvider() {
|
||||
return List.of(
|
||||
new Object[]{WeatherType.SUNNY, "The happy hobbits bade in the warm sun."},
|
||||
new Object[]{WeatherType.RAINY, "The hobbits look for cover from the rain."},
|
||||
new Object[]{WeatherType.WINDY, "The hobbits hold their hats tightly in the windy weather."},
|
||||
new Object[]{WeatherType.COLD, "The hobbits are shivering in the cold weather."}
|
||||
new Object[]{WeatherType.SUNNY, "The hobbits are facing Sunny weather now"},
|
||||
new Object[]{WeatherType.RAINY, "The hobbits are facing Rainy weather now"},
|
||||
new Object[]{WeatherType.WINDY, "The hobbits are facing Windy weather now"},
|
||||
new Object[]{WeatherType.COLD, "The hobbits are facing Cold weather now"}
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -38,10 +38,10 @@ public class OrcsTest extends ObserverTest<GOrcs> {
|
||||
@Override
|
||||
public Collection<Object[]> dataProvider() {
|
||||
return List.of(
|
||||
new Object[]{WeatherType.SUNNY, "The sun hurts the orcs' eyes."},
|
||||
new Object[]{WeatherType.RAINY, "The orcs are dripping wet."},
|
||||
new Object[]{WeatherType.WINDY, "The orc smell almost vanishes in the wind."},
|
||||
new Object[]{WeatherType.COLD, "The orcs are freezing cold."}
|
||||
new Object[]{WeatherType.SUNNY, "The orcs are facing Sunny weather now"},
|
||||
new Object[]{WeatherType.RAINY, "The orcs are facing Rainy weather now"},
|
||||
new Object[]{WeatherType.WINDY, "The orcs are facing Windy weather now"},
|
||||
new Object[]{WeatherType.COLD, "The orcs are facing Cold weather now"}
|
||||
);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user