Strategy pattern : een doodzonde voor hybride talen?
Posted: Thu Jan 05, 2012 4:49 pm
Hoi allemaal,
Ik weet niet wat jullie daar van denken, maar ik heb het nooit echt gehad met het "Strategy pattern" (zie hier). Voor mij is het echt een doodzonde tegen het denken in termen van objecten. Waarom?
Het handige aan OO is dat het je toelaat om tijdens het programmeren objecten toe te voegen die iets tastbaar uit de werkelijkheid (eventueel fictieve werkelijkheid) voorstellen. Dat is volgens mij dan ook het grootste voordeel aan het werken met objecten.
Waarom niet gewoon werken met een else if ? Bijvoorbeeld.
Natuurlijk is het zo dat als bepaalde strategieen vaker gebruikt worden, of de .cpp file te lang wordt, dat we deze strategieen best in een aparte functie plaatsen. Ik zou gewoon deze drie stragieen plaatsen in een aparte file, en deze bijhouden in een namespace. Bijvoorbeeld:
distributionStrategies.cpp
Het voordeel van zo te werk te gaan is dat.
a) Je niet gaat zondigen tegen de kern van het object georienteerd programmeren (hoofdreden!)
b) Alle strategieen samen mooi in 1 file staan, in plaats van allemaal verspreid over verschillende klassen
c) Je het ook over meerdere files kan verdelen indien gewenst (indien de file bijvoorbeeld te lang zou worden)
Groeten,
Glenn
Ik weet niet wat jullie daar van denken, maar ik heb het nooit echt gehad met het "Strategy pattern" (zie hier). Voor mij is het echt een doodzonde tegen het denken in termen van objecten. Waarom?
Het handige aan OO is dat het je toelaat om tijdens het programmeren objecten toe te voegen die iets tastbaar uit de werkelijkheid (eventueel fictieve werkelijkheid) voorstellen. Dat is volgens mij dan ook het grootste voordeel aan het werken met objecten.
Waarom niet gewoon werken met een else if ? Bijvoorbeeld.
Code: Select all
if (situation1) {
// Strategy one
} else if (situation2) {
// Strategy two
} else {
// Strategy three
}
distributionStrategies.cpp
Code: Select all
namespace strategies::distribution {
void firstNodeStrategy() {
}
void intermediateNodeStrategy() {
}
void lastNodeStrategy() {
}
}
a) Je niet gaat zondigen tegen de kern van het object georienteerd programmeren (hoofdreden!)
b) Alle strategieen samen mooi in 1 file staan, in plaats van allemaal verspreid over verschillende klassen
c) Je het ook over meerdere files kan verdelen indien gewenst (indien de file bijvoorbeeld te lang zou worden)
Groeten,
Glenn