Благосостояние
Теперь обратите внимание на общедоступную учетную запись WeChat: Code Farmer Xiaopang, отправьте ключевое слово [лотерея] для лотереи и получите возможность получить книги по физическому программированию. До участия в акции осталось всего 3 дня! 【Лотерея заканчивается в эти выходные】
предисловие
Я считаю, что многие Java-разработчики написали бизнес-процесс изменения состояния, такой как процесс заказа, процесс ухода и так далее. Как правило, идентификатор состояния используется для идентификации определенного этапа жизненного цикла. Многие люди напишут эту логику:
Если есть десятки процессов, разве не взорвется. И что означают эти "0" и "1"?
Подходы к оптимизации могут, конечно, использовать шаблон проектирования в состоянии для выполнения его модели, позволяя объекту иметь состояние пакета в соответствии с различным поведением одного и того же объекта в его состоянии. Мы можем преобразовать между запрограммированным состоянием и определить отдельное состояние:
Но эта операция добавит слишком много зависимостей объекта состояния. Так есть ли какая-то нечисть? Есть конечно. Давайте сначала разберемся с конечным автоматом.
Государственный аппарат
Полное название конечного автомата - конечный автомат, потому что состояния общих автоматов дискретны и перечислимы, что является причиной их ограничения. Конечный автомат представляет конечное число состояний и математическую модель поведения, такую как переходы и действия между этими состояниями. Популярное описание конечного автомата заключается в определении набора процессов изменения состояния: конечный автомат содержит набор состояний, который определяет события, которые он может получать, и поведение исполняемого файла, когда конечный автомат находится в определенном состоянии. После завершения конечного автомата могут ощущаться изменения состояния. Как правило, он включает в себя следующие понятия:
- Состояние для меня слишком ерунда, конечный автомат можно назвать конечным автоматом без состояния.
- События Изменение состояния конечного автомата определенно вызвано инициированием события.
- Поведение запускает бизнес-логику, которая будет выполняться позже. Например, изменение статуса заказа с неоплаченного на статус оплаченного нужно пройти по бизнесу, написать водопровод, изменить баланс счета и т.д.
- Изменение Процесс, при котором состояние инициируется событием для выполнения некоторого действия и перехода в другое состояние.
На рисунке выше схематически представлен процесс изменения. Далее пришло время сказать еще одну вещь, перечисление java.
Перечисления в Java
Перечисление Java — это особый тип класса, который определяет класс списков констант. — это новая функция, представленная в JDK 1.5. Перечисление на самом деле спроектировано как одноэлементный режим в JDK, поэтому его нельзя создавать извне.Создание экземпляра типа перечисления выполняется за нас JVM при его загрузке. Это четко прописано в Спецификации виртуальной машины Java, которая гарантирует потокобезопасность. Поскольку перечисление Java неявно реализует суперкласс перечисления java.lang.Enum, реализовать другой класс невозможно, но можно реализовать интерфейс. Абстрактный метод может быть объявлен для реализации конкретным внутренним перечислением. Давайте определим перечисление цветов, чтобы увидеть:
мы можем пройтиColorful.RED.colorName()
Очень удобно и семантически получать название цвета напрямую.
Далее мы разработаем фактическую сцену, чтобы получить конечный автомат простого типа перечисления для обработки бизнеса.
реальная боевая операция
В сценарии от доставки заказа до доставки мы рассматриваем следующие простые сценарии:
После простого процесса от отправки к отправке и, наконец, к получению товаров, мы можем определить следующее перечисление статусов:
Поскольку планирование является начальным состоянием, его метод prevState указывает на себя, а его nextState указывает на себя, поскольку состояние завершается при получении товаров. Определив эти два указателя для управления требуемым потоком. Разумеется, собственно производство должно совмещаться с собственным бизнесом.
Тогда наш процесс заказа может быть выполнен следующим образом (без геттера и сеттера):
Проведем простой тест:
После двух передач товар благополучно прибыл в руки покупателя, статус был изменен правильно, ремонтопригодность также была гарантирована, нужно только изменить процесс перебора. Ну вот и все на сегодня, надеюсь, вы все уделите больше внимания.