#import #design-patterns #state
#импорт #шаблоны проектирования #состояние
Вопрос:
Я разрабатываю приложение, в котором программа может выполнять ряд операций. Это зависит от импортируемого XML-файла и установленного подключения к БД. Однако некоторые функции могут работать без импортированного XML-файла, а некоторые могут работать, только если XML импортирован или только если подключена БД.
Итак, мой вопрос в том, какой шаблон проектирования я должен использовать для моделирования этого? Я читал о шаблоне состояния, в котором поведение объекта изменяется относительно текущего состояния. Это хороший способ сделать это? Например, у меня может быть несколько состояний: XML_FILE_IMPORTED_ONLY, DB_CONNECTED_ONLY, XML_IMPORTRED_AND_DB_CONNECTED, NOTHING_IMPORTED и на основе текущего состояния объекта будут доступны соответствующие функции?
Любая помощь будет высоко оценена.
С уважением,
Petar
Ответ №1:
У вас есть два конечных автомата, каждый из которых контролирует часть вашего общего состояния. Каждый конечный автомат будет выполнять переходы независимо от другого.
XML импортировал Statemachine
Начальное состояние: не импортировано
- Не импортировано. переходы: «происходит импорт» -> Импортировано.
- Импортировано. переходы: «выгрузка» -> Не импортировано.
Состояние машины подключения к БД
Начальное состояние: не подключен
- Не подключен. переходы: «подключение выполнено успешно» -> Подключено.
- Подключено. переходы: «отключить» -> Не подключен.
Редактировать: конечные автоматы являются излишними для этой проблемы. Каждый из рассматриваемых конечных автоматов имеет два состояния с одним переходом в каждом направлении. Гораздо лучшим способом представить эту ситуацию было бы использовать boolean
переменную.
boolean dbConnected;
boolean xmlImported;
Комментарии:
1. Большое вам спасибо. Я очень рад, что мои рассуждения верны 🙂 Я бы любезно попросил вас, если вы можете дать мне какой-нибудь базовый псевдокод относительно того, как я могу реализовать идею, которую вы предлагаете.