classDiagram class IEntityFactory~T~ { <> +CreateEntity(id, type, x, y, movement, feeding) T +CreateMovementStrategy(movementType) IMovementStrategy +CreateFeedingStrategy(behavior) IFeedingStrategy } class MorgFactory { +CreateEntity(...) Morg +CreateMovementStrategy(...) IMovementStrategy +CreateFeedingStrategy(...) IFeedingStrategy -ParsePreyTypes(feedingParts) List~string~ } class Entity { <> } class Morg { } class IMovementStrategy { <> } class MovementStrategyPaddles { } class MovementStrategyOozes { } class IFeedingStrategy { <> } class FeedingStrategyAbsorbs { } class FeedingStrategyEnvelops { } IEntityFactory~T~ <|.. MorgFactory : implements MorgFactory ..> Morg : creates MorgFactory ..> IMovementStrategy : creates MorgFactory ..> IFeedingStrategy : creates Entity <|-- Morg IMovementStrategy <|.. MovementStrategyPaddles IMovementStrategy <|.. MovementStrategyOozes IFeedingStrategy <|.. FeedingStrategyAbsorbs IFeedingStrategy <|.. FeedingStrategyEnvelops Morg --> IMovementStrategy Morg --> IFeedingStrategy note for MorgFactory "Creates Morg instances with configured strategies and prey types from file input"