@muhasa

Вопрос к ООП-шникам — как организовать архитектуру для конвейера формул?

Здравствуйте.
Пишу на php некоторое приложение, которое для фирмы делает некоторый расчет.
Какие имеет сущности - фирма, у нее множество параметров (param1, param2, ..., paramN), есть несколько методик подсчета определенного уровня доверия, каждая методика включает коэффициенты, расчитываемые по формулам и таблица соответствия для каждой формулы.

Например:
Рога и копыта
1. На рынке: 5 лет
2. Сфера: Промышленность
3. Бух. отчет парам. 1: 150 000 (условные параметры)
4. Бух. отчет парам. 2 2: 300 000

Методика 1. Основная
1. Коэф - Бух. отчет парам. 2 / Бух. отчет парам. 1 = 2
2. Таблица соответствия для коэф. 1:

Если сфера промышленность, то при
коэф. 1 > 1 = 5 баллов,
коэф.1 = 1 = 3 балла,
коэф.2 < 1 = 1 балл.

Для иных сфера свои коэф., но мы их не рассматриваем в примере.

Один из важных аспектов - методик подсчета уровня доверия фирме может быть сколько угодно, у каждого свои коэффициенты и методики расчета, но на выходе мы всегда имеет некоторый суммарный балл, который нам и нужен.

Теперь к сути - почему-то мне видится, что обоснованным было бы применить ОО-модель с примерно следующей логикой организации:

Методика 1 - класс, имеющий массив коэффициентов.
Сами коэффициенты - тоже классы, внутри которых есть метод handler, запускающий расчет по формулам.
Формулы - тоже в отдельные классы.
Таблицы соответствия - тоже отдельные классы

И матрешкой одно в другое вкладывать.
Таким образом получится набор методик, внутри которых есть ряд коэффициентов, высчитываемых через формулы и таблицы соответствия этих формул набору значений.

Тут 2 ключевых вопроса и 1 общий.

1) Если делать так, как я сказал, как загружать, например, формулы в класс коэффициента? Какой придумать загрузчик в такой ситуации?
2) Как передавать формулам данные? Не в базу же данных каждая лезть будет, запросов будет тьма. Была мысль насчет формирования некоторого объекта-источника данных, как смотрите на это?
3) Не слишком заморочено? Просто хотелось бы иметь четкую стройную структуру, а не кучу друг на друге налепленных алгоритмов.

Или может предложите другую схему?
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы