@SciFi

Как правильно реализуется множество мелких классов со схожей функциональностью и одним родителем?

Формулировка такого вопроса была не такой уж простой вещью.

Задача: есть некий числовой параметр, который необходимо форматировать множеством способов. Пользователю нужно предоставить выбор вида форматирования с выводом его названия.

Звучит запутано. Я пытался сделать один класс родитель, который реализует метод format($value).
И множество классов наследников, каждый из которых предлагает свою реализацию метода format и у которого есть поле для описания форматирования. Но столкнулся с проблемой автоматической загрузки всех этих классов (их будет два десятка, не меньше). И унификацией вызова метода форматирования.

Кейс: пользователь ввел число. Я должен вывести ему список всех способов форматирования, которые есть. Например:
1. Отрезать 1 символ впереди.
2. Умножить на 10.
и так далее.
При выборе метода он должен применяться к числу.

Подскажите, пожалуйста, наиболее оптимальное решение задачи.
  • Вопрос задан
  • 2202 просмотра
Пригласить эксперта
Ответы на вопрос 1
@PiloTeZ
...
class NumberManager
{
    /**
     * Форматирование чисел
     * @param integer $number Число
     * @param string $formatClass Класс для форматирования
     * @param array $formatClassParams Параметры для класса форматирования
     * return bool
     */
    public function format($number, $formatClass, $formatClassParams = [])
    {
        // Создаём экземляр класса для форматирования
        $formatClassName = $formatClass . 'Format';
        if (!class_exists($formatClassName)) {
               return false;
        }

        $formatter = new $formatClass();
        // Передаём этому классу число, параметры форматирования и получаем результат
        return $formatter->formatNumber($number, $formatClassParams);
    }
}
Ответ написан
Ваш ответ на вопрос

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

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