Страницы

Поиск по вопросам

среда, 4 марта 2020 г.

Стоит ли создавать новый класс для вариации алгоритма?

#java #алгоритм #классы #условия


Есть класс А, который реализует некий алгоритм.
На главной форме есть чекбокс, при отметке которого алгоритм выполняется с небольшими
изменениями в логике.
Также могут появиться еще много чекбоксов, которые по-немногу меняют логику алгоритма.
Получается, для обработки всех чекбоксов в алгоритме класса А надо будет писать много
условий, код усложняется как визуально, так и для понимания.  

Или лучше создавать новые классы А2, А3 и т.д., которые "в чистом виде" будут реализовывать
свои вариации алгоритма?
    


Ответы

Ответ 1



На мой взгляд лучше создать новый класс под каждый алгоритм. Т.е. вы создаете интерфейс допустим такой: interface AlgoritmExecutor{ execute(); } И для каждого класса алгоритмов его реализуете, и сам алгоритм пишите в нем. В этом случае при добавлении нового алгоритма Вам надо будет написать новый класс, а не лезть в старый, добавляя новые условия. Но остается вопрос как выбирать нужный класс. Тут моё предложение не лучшее. Создать фабрику, которая будет принимать пачку boolean за каждый чекбокс. class AlgoritmFactory{ static AlgoritmExecutor chooseAlgoritm(boolean... checkbox){ //тут исходя из включенных чекбоксов выбираете нужный класс алгоритма } } Это удобно тем, что в слое вида вы обращаетесь к фабрике, передаете ей все чекбоксы и получаете выбранный алгоритм в виде интерфейса. public void algoritmAction(){ AlgoritmExecutor algoritm = AlgoritmFactory(checkbox1.isEnabled(), checkbox2.isEnabled(), checkbox3.isEnabled()); algoritm.execute(); } но фабрика становится не очень понятна для стороннего читателя из-за пачки булевых значений.

Комментариев нет:

Отправить комментарий