Hej,
Piszę prosty algorytm genetyczny i używam w nim stworzonej przez siebie klasy oceniającej (każdemu osobnikowi w populacji daje ona tzw. fitness, czyli jak dobrze pasuje dana jednostka do wzorca), chcę przy tworzeniu obiektu tej klasy oceniającej podawać mu dany parametr (np enum) i potem zgodnie z tym parametrem oceniać osobniki według danej metody oceniającej ustawionej przez ten parametr.
np. w klasie OcenFitness mam 2 metody
double ocenLiniowo(osobnik o1, osobnik o2) return o1-o2
double ocenKwadratowo(osobnik o1, osobnik o2) return (o1-o2)*(o1-o2)
tworzę obiekt (argument to jakiś enum)
OcenFitness juror = OcenFitness(LINIOWO)
i teraz przy wywoływaniu np:
juror.ocen(o1,o2)
chcę, żeby wykonywała się metoda 'ocenLiniowo'
mam 2 pomysły:
- na switchach\ifach
- tablica z funkcjami, enumy to indexy przez co nie mamy ifów i jest szybciej(?)
Moje pytanie:
Jak powinno to być zrobione, żeby było szybko, przejrzyście itp?