Design patterns probleem
Ik zit met een probleem!?
Mijn probleem is dat ik gebruik maak van een factory pattern in php.
Code (php)
Dat werkt in princiepe prima. Maar nou heb ik in elk model een command pattern dat is bijna hetzelfde princiepe maar dan heeft elk model alleen de functie execute.
Een combinatie van die 2 geeft dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
switch($model){
case 'textModel' :
switch($action){
case 'text' :
switch ($type){
case 'add':
$value = new Factory(New textModel(new text(new textAdd())));
break;
case 'edit':
$value = new Factory(New textModel(new text(new textEdit())));
break;
}
break;
case 'iets' :
switch ($type){
case 'add':
$value = new Factory(New textModel(new iets(new ietsAdd())));
break;
case 'edit':
$value = new Factory(New textModel(new iets(new ietsEdit())));
break;
}
break;
}
break;
}
?>
switch($model){
case 'textModel' :
switch($action){
case 'text' :
switch ($type){
case 'add':
$value = new Factory(New textModel(new text(new textAdd())));
break;
case 'edit':
$value = new Factory(New textModel(new text(new textEdit())));
break;
}
break;
case 'iets' :
switch ($type){
case 'add':
$value = new Factory(New textModel(new iets(new ietsAdd())));
break;
case 'edit':
$value = new Factory(New textModel(new iets(new ietsEdit())));
break;
}
break;
}
break;
}
?>
En dat werkt niet dan krijg ik object als $value;
Is er iemand die mij kan helpen?
Greetz,
Marcel
Gewijzigd op 01/01/1970 01:00:00 door Cyberboy fdsafds
Uhhhh. Ik vind je implementatie een beetje raar. Ik begrijp dan ook niet helemaal waar je naartoe wil hier. Kijkend naar het tweede stuk code dat je geeft, met add edit e.d., lijkt mij MVC veel meer op z'n plaats. Wat wil je precies hiermee bereiken? Het factory-gedeelte is wel helder, al vind ik daar de 'a', 'b' en het switchen van $model en $action ook een beetje curieus.
Ik heb een model die een deel van het beheers systeem vertegenwoordigd.
Deze modellen hebben allemaal dezelfde interface en daardoor kan ik dus een factory pattern gebruiken.
Ieder model bevat een aantal submoddellen deze hebben een specifieke taak binnen het model.
Bijvoorbeeld textModel (heeft alles te maken met menu items aanmaken en teksten erbij) Deze bevat de submodellen text en menu.
Weer een soort van Factory, maar de submoddellen bevatten allemaal een functie add/edit/remove en die wordt weer doorverwezen naar een subclass die dat afhandeld. Dit doormiddel van het command pattern. (ze bevatten dus allemaal de methode execute)
Het probleem ligt hem in het feit dat als ik in een model zoals textmodel de submodellen declareer en hun command pattern alles werkt.
Maar als ik het in een keer aanroep het niet werkt!?
New Factory(new textModel(new text(new textAdd())));
Dat werkt dus niet!
$f = New Factory(new textModel());
$fa = $f->add(); // in de functie add van textModel wordt een url variabele type uitgelezen en aan de hand daarvan wordt het submodel bepaald in dit geval text;
In text wordt uitgelezen dat het gaat om een add action dus die wordt door verwezen doormiddel van het command pattern.
Dit werkt wel, dat komt hoogst waarschijnlijk omdat ik in een object geen subobjecten hebt.
Kan het kloppen dan dat je in een pattern niet meer dan 1 object kan doorgeven?