Stel, je hebt vier knoppen. De eerste zet de wasmachine 1 aan, de tweede zet wasmachine 2 aan, de derde zet de magnetron op defrost aan, de vierde zet de magnetron op heat aan. Logischerwijs veronderstel ik dat je dan 3 classes maakt, namelijk Knop, Wasmachine en Magnetron.
Stel:
Hoe koppel ik nu een functie aan de knop?
Optie's:
1:
Je geeft een abstracte Command class met een execute methode mee aan de knop. Maar in dit geval leg je het probleem bij de class die de button aanmaakt. Die heeft (misschien) niks te maken met de apparaten die er zijn.
2:
Er is een Command Controller class die alle commando's van een systeem doorstuurt naar het betreffende apparaat (mits aanwezig). Dit zal bij een uitgebreid systeem een erg grote class opleveren, maar hierdoor hoeft een knop (of de bovenliggende laag) geen weet te hebben van de apparaten in het systeem.
Ik neig naar de tweede optie, ook omdat je hieraan makkelijk een check kunt toevoegen wie welke functie's uit mag voeren.
Hoe lossen jullie dit op?
Stel:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
| class Knop { void clicked() {} } class Wasmachine { void start() {} } class Magnetron { void defrost() {} void heat() {} } |
Hoe koppel ik nu een functie aan de knop?
Optie's:
1:
Je geeft een abstracte Command class met een execute methode mee aan de knop. Maar in dit geval leg je het probleem bij de class die de button aanmaakt. Die heeft (misschien) niks te maken met de apparaten die er zijn.
2:
Er is een Command Controller class die alle commando's van een systeem doorstuurt naar het betreffende apparaat (mits aanwezig). Dit zal bij een uitgebreid systeem een erg grote class opleveren, maar hierdoor hoeft een knop (of de bovenliggende laag) geen weet te hebben van de apparaten in het systeem.
Ik neig naar de tweede optie, ook omdat je hieraan makkelijk een check kunt toevoegen wie welke functie's uit mag voeren.
Hoe lossen jullie dit op?
You don't have to be crazy to do this job, but it helps ....