Ik heb een class Check. Maar nu heb ik twee soorten Checks. Een check op Value en een check op State. In eerste instantie had ik gewoon gegevens voor beide soorten checks opgenomen in de class Check. Persoonlijk vond ik dit niet zo mooi, aangezien dan niet meer duidelijk is welke gegevens bij welke check horen.
Zelf vond ik het mooiste om deze twee te subclassen van Check (welke informatie bevat die voor beide (en eigenlijk alle mogelijke) checks bevat). Het is alleen vrij lastig om in de applicatie te herkennen dát het een check is en wát voor een check het is. Ik kan dan niet meer controleren met is of het een Check is, maar wel met as Check != null
Maar nu wil ik dat het mogelijk is dat dynamisch tussen deze twee subclasses geswitcht moet kunnen worden. De gebruiker moet dus kunnen zeggen: deze Check moet geen check op Value maar een check op State worden.
Zoals ik het nu ontworpen heb, houdt dat volgens mij in dat de huidige CheckValue verwijderd moet worden, en op die plaats een CheckState ingevoegd. Dat is dus duidelijk ook niet wat ik wil.
Een derde optie is het definiëren van een interface ICheckType (oid), en hierin specificeren welke functie classes moeten hebben. In de class Check neem ik dan een ICheckType op, en kan ik at runtime die verwijzing invullen met de gewenste afgeleide class.
Alleen dat laatste vind ik weer vrij lastig met opslaan en uitlezen in XML.
Is hier een algemene aanpak voor? Of welke is anders de beste?
Zelf vond ik het mooiste om deze twee te subclassen van Check (welke informatie bevat die voor beide (en eigenlijk alle mogelijke) checks bevat). Het is alleen vrij lastig om in de applicatie te herkennen dát het een check is en wát voor een check het is. Ik kan dan niet meer controleren met is of het een Check is, maar wel met as Check != null
[Check]
|
-----------------
| |
| |
[CheckValue] [CheckState]
Maar nu wil ik dat het mogelijk is dat dynamisch tussen deze twee subclasses geswitcht moet kunnen worden. De gebruiker moet dus kunnen zeggen: deze Check moet geen check op Value maar een check op State worden.
Zoals ik het nu ontworpen heb, houdt dat volgens mij in dat de huidige CheckValue verwijderd moet worden, en op die plaats een CheckState ingevoegd. Dat is dus duidelijk ook niet wat ik wil.
Een derde optie is het definiëren van een interface ICheckType (oid), en hierin specificeren welke functie classes moeten hebben. In de class Check neem ik dan een ICheckType op, en kan ik at runtime die verwijzing invullen met de gewenste afgeleide class.
[Check]
-------
ICheckType c;
[ICheckType]
------------
void DoCheck;
|
-----------------
| |
| |
[CheckValue] [CheckState]
------------ ------------
void DoCheck; void DoCheck;
Alleen dat laatste vind ik weer vrij lastig met opslaan en uitlezen in XML.
Is hier een algemene aanpak voor? Of welke is anders de beste?
Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack