crisp schreef op woensdag 05 april 2006 @ 00:01:
Wat is dat anders dan bijvoorbeeld zoiets:
PHP:
1
2
3
4
5
6
7
8
| $commandos = array();
$commandos[] = array( 'function' => 'func1', 'parameters' => array('parm1') );
$commandos[] = array( 'function' => 'func2', 'parameters' => array('parm1', 'parm2') );
foreach($commandos as $commando)
{
call_user_func_array($commando['function'], $commando['parameters']);
} |
?

Dat die opstelling niet in java / C# mag, zoals ik dat gewend ben

-NMe- schreef op woensdag 05 april 2006 @ 00:01:
Hmm, dat ziet er inderdaad wel praktisch en erg natuurlijk uit. Echter betwijfel ik of het in dit geval handiger is dan het gebruik van call_user_func. Performancetechnisch vermoed ik dat PHP's standaardfuncties iets beter uitpakken.
Hehe, ik denk dat schaalbaarheid zwaarder meeweegt dan performance, onder reeele omstandigheden. Natuurlijk is het performance technisch beter om PHP's standaard functies te gebruiken, maar deze methode biedt een eenvoudig mechanisme om commando's toe te voegen, waarbij je niet in een lijstje even bij hoeft te houden welke het nou precies allemaal zijn zoals crisp doet; dat is natuurlijk ook errorprone, aangezien die parameters gewoon valid tijdens compiletime zijn, maar tijdens runtime _niet per definitie_. Bij de command pattern instance je commando objecten en alles is tijdens compiletime te evalueren, i.e. een beetje IDE vist dit er direct uit

Scheelt je dus ook nog overhead tijdens development
[
Voor 61% gewijzigd door
prototype op 05-04-2006 00:19
]