Op dit moment heb ik ongeveer de volgende constructie:
Dit is sterk versimpeld, maar het illustreert de vraag die ik heb.
Je ziet Calculation waar de meeste logica in zit. Zowel CalculationA als CalculationB hebben een resultaat, die voornamelijk gebruik maakt van de methods ed. die in Calculation zitten. Alleen de berekening van het resultaat is steeds anders en CalculationX kan aanvullende methods nodig hebben.
In elk geval is de data die erin gaat steeds hetzelfde. Wat is de juiste manier om éénmalig de data erin te gooien en dan de verschillende resultaten eruit te kunnen halen?
Andere manieren om dit te doen zijn;
1. Alles in één class gooien en dan de resultaten opsplitsen in method resultA en resultB. Niet wenselijk natuurlijk...
2. CalculationA als CalculationB traits toevoegen aan Calculation.
Uiteraard zijn er meerdere CalculationX classes en ook meerdere setVarN methods.
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
31
32
33
34
| // Calculation.php class Calculation { protected $var1; protected $var2; protected $var3; public function setVar1($var1) { $this->var1 = $var1; } public function setVar2() { $this->var2 = $var2; } public function setVar3() { $this->var3 = $var3; } public function doThis() { // example } public function doThat() { // example } } |
PHP:
1
2
3
4
5
6
7
8
| // CalculationA.php class CalculationA extends Calculation { public function result() { // example A } } |
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
| // CalculationB.php class CalculationB extends Calculation { public function doSomethingElse() { // example } public function result() { // example B } } |
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| // CalculationController.php $calculationA = new CalculationA(); $calculationA ->setVar1($var1) ->setVar2($var2) ->setVar3($var3); $resultA = $calculationA->result(); $calculationB = new CalculationA(); $calculationB ->setVar1($var1) ->setVar2($var2) ->setVar3($var3); $resultB = $calculationB->result(); |
Dit is sterk versimpeld, maar het illustreert de vraag die ik heb.
Je ziet Calculation waar de meeste logica in zit. Zowel CalculationA als CalculationB hebben een resultaat, die voornamelijk gebruik maakt van de methods ed. die in Calculation zitten. Alleen de berekening van het resultaat is steeds anders en CalculationX kan aanvullende methods nodig hebben.
In elk geval is de data die erin gaat steeds hetzelfde. Wat is de juiste manier om éénmalig de data erin te gooien en dan de verschillende resultaten eruit te kunnen halen?
Andere manieren om dit te doen zijn;
1. Alles in één class gooien en dan de resultaten opsplitsen in method resultA en resultB. Niet wenselijk natuurlijk...
2. CalculationA als CalculationB traits toevoegen aan Calculation.
Uiteraard zijn er meerdere CalculationX classes en ook meerdere setVarN methods.