Hallo,

Op dit moment heb ik 2 classes:
- Stage
- StageManager

De taak van de StageManager is om Stages aan te kunnen maken, te kunnen verwijderen en aan te roepen aan de hand van het id van de stage (die de stage krijgt als hij via de StageManager wordt aangemaakt);


StageManager.createStage();
StageManager.removeStage(stage);
StageManager.getStageById(stageId);


Nu wil ik dit gaan valideren, maar waar moet de validatie? Wordt dit gedaan door de StageManager, of moet ik dit (ook nog eens) laten controleren door de Stage zelf?

Alvast bedankt voor de hulp!
Het valideren is weer een nieuwe taak, nieuwe taak = nieuw object. Dus we maken een StageValidator aan.

De StageManager kan deze StageValidator bijv. injecteren en die aanroepen wanneer het nodig is. Je kan hem ook zelf aanroepen, na het verzenden van een formulier bijv.
Oke, en bij het hebben van een Manager en / of Validator is het toch niet toegestaan om zelf 'new Stage()' aan te roepen? Dit moet dan toch via de Manager gaan?

Edit:
En stel dat ik wil weten of de ingegeven naam van de Stage alleen uit letters bevat, dan doe ik dit op de volgende manier?:


if (StageValidator.isValidName('naam123'))
{
   // Oops, cijfers in de naam
}
>> bij het hebben van een Manager en / of Validator is het toch niet toegestaan om zelf 'new Stage()' aan te roepen? Dit moet dan toch via de Manager gaan?

Zodra je een manager hebt zou ik het inderdaad allemaal via de manager laten lopen.

>> En stel dat ik wil weten of de ingegeven naam van de Stage alleen uit letters bevat, dan doe ik dit op de volgende manier?:

Ik zou de state van een object valideren en niet specifieke values. Voorbeeldje:

public class StageManager
{
    private StageValidator validator;

    public StageManager(StageValidator validator)
    {
        this.validator = validator;
    }

    public Stage create(String name)
    {
        Stage stage = new Stage(name);
        ErrorList errors = validator.validate(stage);

        if (0 < errors.length) {
            // ... error handling
        } else {
            return stage;
        }
    }
}
Aha oke, dus de method validate roept (bijvoorbeeld) 3 andere methods aan:

_checkName()
_checkPersistent()
_checkWhatever()

en die methods controleren dus de naam, persistent, etc. van het Stage object dat is opgegeven.
Begrijp ik dit zo goed?

En dan nog een laatste vraag tot slot;
Kan ik de StageValidator het best aanmaken in de StageManager of hier een static class van maken?

Reageren