Посмотрите пиксаровский мультик "Partly cloudy"
В вашем мире, так же как и в мультике, новые существа рождаются из облаков (Cloud). Однако, какое существо появится у облака, зависит от погоды, времени суток, ветерка и т.п. Также, от того, кто родится, облако вызывает либо аиста либо демона, для того чтобы отнести дитё его счастливым родителям.
Детёныши бывают:
1. Щенок (Puppy)
2. Котёнок (Kitten)
3. Ёж (Hedgehog)
4. Медвежонок (Bearcub)
5. Поросёнок (Piglet)
6. Летучий Мыш (Bat)
7. Воздушный шарик (Balloon)
Погодные условия и время бывают такими:
1. Светило (Luminary): либо светит (isShiny) либо нет (относится и к солнцу и к луне).
2. Ветерок (Wind): бывает от 0 до 10км/ч
3. Время суток (Daylight): утро, полдень (noon), вечер, ночь
После создания существа облако вызывает у класса Magic один из следующих методов: CallStork (вызвать аиста) или CallDaemon (вызвать демона) и затем вызывает GiveBaby для передачи аисту или демону нового существа.
Текущая реализация облака такова:
class Cloud
{
private Daylight daylight = new Daylight();
private Luminary luminary = new Luminary();
private Wind wind = new Wind();
private Creature internalCreate()
{
if (daylight.current() == DaylightType.Night)
{
if (luminary.isShining())
{
return new Creature(CreatureType.Bat);
}
}
// TODO – implement all other creatures
throw new NotImplementedException();
}
public Creature create()
{
Creature creature = internalCreate();
Magic magic = new Magic();
magic.callDaemon(creature.getCreatureType());
return creature;
}
}
Составьте свою табличку зависимости получаемого существа и кто должен его донести до родителей:
Пример одной записи: