Jak najlepiej podejść to takiego problemu: mam zaimplementować metodę zwracają liste konkretnych obiektów w zależności od algorytmu. Algorytmów może być kilka. Słyszałem, że w takich przypadkach najlepiej zastosować fabrykę i interfejs, w celu uniknięcia zbędnych ifów w razie dodawania nowego algorytmu. Może mi ktoś wskazać jak mogłoby wyglądać takie factory i interface??
A co łączy ze sobą te algorytmy? Parametry, które przyjmują bądź obiekty, które zwracają?
Wynikiem dzialania każdego z tych algorytmów ma być lista obiektów mojego typu, w zależności od algorytmu stan tych obiektów w zwracanej liście jest inny.
Dodaj jeszcze, że parametry, które przyjmują również są identyczne.
Poczytaj o wzorcu projektowy state: http://marioosh.5dots.pl/2009/02/08/wzorce-projektowe-state.html
Moze najprosciej (i chyba calkiem poprawnie) bedzie wprowadzic interfejs:
IMojInterfejs {
List<Costam> generujObiekty(...)
}
no i kazdy algorytm siedzialby w swojej klasie (ktora oczywiscie implementuje IMojInterfejs).
Ale gdzie tu jakiś problem? Algorytm ma zwracać listę obiektów, to niech ją zwraca. Nie widzę potrzeby zaprzęgania jakiegokolwiek wzorca. Niech sam algorytm będzie interfejsem i tyle (tak jak @marcinj2 sugeruje). Możesz sobie później ewentualnie zrobić fabrykę algorytmów jeśli zajdzie taka potrzeba... ale nie mnóż bytów ponad potrzebę.