Почему хреновый подход? Возьмем какой-то простой пример:
Нужно сделать AI мобу для поиска лучшего пути.
Есть, например, алгоритмы дейкстра и А*. Они оба основаны на графе, который нужно будет строить. Мы создаем абстрактный класс, например, GraphBasedPathfinder, в котором есть метод генерации...