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);
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?
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;
}
}
}