Друзья! Возвращаюсь к столь головоломной для меня теме проектирования с новым вопросом к вам. Решил, правда, выделить его в отдельную ветку для удобства.
Имею локальную задачу, которая с одной стороны, достаточно узкая по содержанию, а с другой - весьма витиеватая по решению, т.к. одновременно содержит и набор шкал с фиксированными значениями, относительно которых оцениваются загружаемые извне параметры персонажа, и алгоритм последующего анализа полученных результатов. Тему единой ответственности предлагаю пока опустить: примем, что с точки зрения заложенной механики - это единый и неделимый функционал. Всё, что можно было от него оторвать и использовать повторно, уже оторвано
Поскольку всякого "мяса" в алгоритме много (хранилище шкал, система оценки, выдача результатов в разной форме), запихивать всё это в качестве группы методов в существующий класс не хочется, хотя это смотрелось бы органично в Character, где и "живут" все анализируемые свойства. Я убеждён, что тут нужен отдельный класс для удобства управления всем хозяйством, особенно если потом по части баланса покрутить потребуется. Что в итоге получается? Имеем некий новый класс, который является по сути набором из нескольких методов, решающих одну задачу и различающихся исключительно формой предоставления результата.
То что я накопал в сети, навело меня на мысль об использовании для моих целей класса со статическими переменными и методами? В качестве альтернативы я помню, как коллега
Nooob в самом начале темы о проектировании демонстрировал код, содержащий именно
экземпляр класса-модели, причём записанный в константу, и обращался к нему за расчётами. Хотелось бы получше понять преимущества и недостатки использования этих вариантов в описанной мною целях. Заранее спасибо!