Class AgentFactory

java.lang.Object
epidemic.factory.AgentFactory

public class AgentFactory extends Object
Fabryka odpowiedzialna za spójne tworzenie instancji agentów (wzorzec Abstract Factory). Zapewnia scentralizowane miejsce inicjalizacji parametrów początkowych, takich jak wiek, prędkość bazowa, przypisanie strategii ruchu czy losowanie unikalnej osobowości.
  • Field Details

  • Constructor Details

    • AgentFactory

      public AgentFactory(PersonalityFactory personalityFactory)
      Inicjalizuje fabrykę agentów.
      Parameters:
      personalityFactory - Fabryka dostarczająca profile psychologiczne dla nowo tworzonych ludzi.
  • Method Details

    • createHuman

      public Human createHuman(Point2D pos, int age, double baseSpeed, Personality personality, MovementStrategy strategy)
      Tworzy nowego ludzkiego agenta z pełnym profilem psychologicznym.
      Parameters:
      pos - Pozycja startowa na mapie.
      age - Początkowy wiek agenta.
      baseSpeed - Bazowa prędkość poruszania się.
      personality - Profil osobowości decydujący o reakcjach agenta na zagrożenie.
      strategy - Domyślna strategia poruszania się w stanie spokoju.
      Returns:
      Gotowa do dodania na mapę instancja Human.
    • createAnimal

      public Animal createAnimal(Point2D pos, int age, double baseSpeed, SpeciesType type, MovementStrategy strategy)
      Tworzy nowego agenta zwierzęcego określonego gatunku.
      Parameters:
      pos - Pozycja startowa na mapie.
      age - Początkowy wiek zwierzęcia.
      baseSpeed - Bazowa prędkość poruszania się.
      type - Konkretny gatunek zwierzęcia (np. BAT, RAT, DOG).
      strategy - Domyślna strategia poruszania się w stanie spokoju.
      Returns:
      Gotowa do dodania na mapę instancja Animal.
    • createOffspring

      public Agent createOffspring(Agent parentA, Agent parentB)
      Rozwiązuje logikę dziedziczenia i tworzy potomka dla podanej pary agentów. Metoda polimorficzna – deleguje tworzenie do odpowiednich podmetod w zależności od typu rodziców (Human/Animal).
      Parameters:
      parentA - Pierwszy rodzic biorący udział w rozrodzie.
      parentB - Drugi rodzic biorący udział w rozrodzie.
      Returns:
      Nowy agent z parametrami odziedziczonymi po rodzicach.
      Throws:
      IllegalArgumentException - Jeśli gatunki rodziców są niezgodne.
    • createHumanOffspring

      private Human createHumanOffspring(Point2D pos, Human a, Human b, MovementStrategy strategy)
    • createAnimalOffspring

      private Animal createAnimalOffspring(Point2D pos, SpeciesType type, Animal a, MovementStrategy strategy)