Давайте поговорим о государственных машинах
Давайте поговорим о государственных машинах

1. Что такое государственная машина?

1. Определение государственной машины

Конечный автомат, также известный как конечный автомат (FSM), представляет собой математическую модель, абстрагированную от правил работы реальных вещей. Он состоит из регистра состояния и комбинационной логической схемы. Он может выполнять передачу состояния в соответствии с заданным состоянием в соответствии с управляющим сигналом. Это центр управления, который координирует соответствующие действия сигналов и выполняет определенные операции.

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

2. Приведите пример

В качестве примера возьмем коробку передач автомобиля. Если это автоматическая коробка передач, то каждая передача, соответствующая переключению передач, имеет состояние. Например, передача P означает стоянку, а передача N означает состояние холостого хода. Передача находится в рабочем состоянии, R Задняя передача. Каждое поведение переключения будет изменять состояние коробки передач. Такое поведение переключения эквивалентно событию перехода состояния. Существуют ограничения на события перехода состояний конечного автомата, а ограничения перехода состояний коробки передач являются физическими ограничениями. Если взять в качестве примера мой Chevrolet, то для переключения с передачи P на передачу D мне нужно: P файлы -> N файлы- > R файлы -> D файлы преобразуются последовательно и не могут быть преобразованы напрямую из P файлы Перейти кDфайлы。

2. Как играть в конечный автомат

1. Состав государственной машины

Состояние

Определите статус: Определите различные статусы системы. Каждое положение файла коробки передач эквивалентно статусу государственной машины.

Переход

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

Действие

Определить действия: для разных состояний определите соответствующие действия. Эти действия могут выполняться при входе в состояние, при выходе из него или во время определенных переходов.

Событие

Событие: его также можно назвать триггером, что означает то же самое, что является триггером или паролем для выполнения определенной операции: когда конечный автомат находится в определенном состоянии, конечный автомат сработает только тогда, когда внешний мир сообщит о состоянии. машина, что делать. Выполнять определенные действия для завершения операций, которые требует от нее внешний мир.

2. Схема конечного автомата

Поняв базовые знания, а затем нарисовав диаграмму состояний, вы можете написать код в соответствии с диаграммой состояний для реализации логики этого конечного автомата.

3. Полезны ли конечные автоматы?

1. Что нам дает государственная машина?

В предыдущих главах мы рассказали, что такое конечный автомат и как его использовать. В повседневной разработке мы всегда думаем так. Код конечного автомата настолько сложен. Сложный код может замедлить наш прогресс в разработке. Нужно ли нам использовать конечный автомат? Итак, здесь мы разберем, что может дать нам государственная машина и каковы ее недостатки.

Давайте сначала поговорим о преимуществах
  1. Легко понять и спроектировать: самое современное Машина может сделать бизнес-модель более понятной, а усовершенствованный персонал может лучше понять бизнес-логику.
  2. Простота обслуживания и расширения. Режим «Государственная машинадизайн» более удобен для персонала, который поддерживает и расширяет код.
  3. Может поддерживать комплекс Модель: государственная машина Модель В сложной бизнес-модели это значительно сокращает время разработки и обслуживания.
Какие области бесполезны?
  1. Сложность кода: государственная машина Программирование требует большего количества интерфейсов и классов реализации.,Следовательно, сложность кода будет выше.,Это также будет немного сложнее понять.
  2. Операционная эффективность: общественная машинное программирование, потому что вам нужно часто создавать государственную машина, эффективность работы будет немного выше.
  3. Трудно отлаживать: современное состояние Режим проектирования машинного программного кода используется чаще, и переход во время отладки будет более сложным.

Вообще говоря, конечные автоматы удобны в использовании и способствуют дальнейшему обслуживанию и расширению, но стоимость использования относительно высока, и для программистов существует определенный технический порог. Но это все технически. Будет ли все по-другому, если мы посмотрим на это с другой стороны?

2. Что государственные машины могут дать бизнесу?

Как упоминалось ранее, все преимущества и недостатки конечных автоматов рассматриваются с технической точки зрения. Однако если вы посмотрите на то, что может дать государственная машина с точки зрения бизнеса.

С точки зрения бизнеса
  1. Четкий бизнес-процесс: в дизайнгосударственной машине необходимо определить все состояние всего бизнеса,Потоковой процесс, соответствующий статусу,После завершения этой дизайнерской переписки весь процесс станет очень ясным. Хотя бизнес-процессом занимаются менеджеры по продукту,,Однако при проведении технического анализа важно полностью обсудить и определить техническую осуществимость процесса передачи бизнеса.,Это позволяет менеджерам по продуктам и техническому персоналу глубже понять этот новый продукт.,Процесс бизнес-потока становится более понятным.
  2. Четкие границы бизнеса: модель технического дизайна,Какую помощь вы можете оказать своему бизнесу? Среди множества шаблонов проектирования режим состояния является моделью дизайна, более ориентированной на бизнес.,Проще говоря, при использовании паттерна состояний должен существовать соответствующий бизнес-сценарий.,Каждый режим состояния может обслуживать только соответствующий бизнес-сценарий. Если государственная машина используется в бизнесе, то это дело это государственная машина не будет просто использовать государственную в определенной бизнес-реализации машина, но государственная должна использоваться на протяжении всего жизненного цикла модуля машина. Например, в процессе заказа используется государственная машина,Процесс заказа имеет【Разместить заказ】->【платить】->【Перевозки】->【Подтвердить платеж】Результат нескольких штатов。Если используетсягосударственная машина не может использовать только состояния для определенного узла процесса, например [order] Машина Другие узлы не используются, Использовать отдельногосударственная Если автомобиль государственный Машина просто неполная. А если в процессе заказа используется государственная машина, то ты найдешь эту государственную Граница машины является бизнес-границей этого процесса заказа.

4. Есть ли какая-либо связь между шаблоном состояний и проектированием, ориентированным на предметную область?

Доменно-ориентированное проектирование — это подход к разработке программного обеспечения, при котором сложные проблемы решаются путем подключения конкретных реализаций к постоянно улучшающейся модели основных бизнес-концепций. Эта концепция была предложена Эриком Эвансом. Что касается определения предметно-ориентированного проектирования, в «Глоссарии терминов предметно-ориентированного проектирования» их много в Интернете, и я не буду представлять их здесь подробно.

1. Сократите расходы на связь

Ранее мы говорили о конечных автоматах, а теперь внезапно переходим к DDD (проектирование, управляемое предметной областью). Какова связь между ними? Необходимо поговорить об идее разработки в DDD, которая заключается в том, чтобы позволить экспертам в предметной области и техническим экспертам создавать друг друга. общий язык. Разработайте систему вместе. Государственная машина просто выражает этот бизнес-процесс на техническом языке, чтобы технические эксперты и эксперты в предметной области имели общую модель для описания идей, которые они хотят выразить, чтобы лучше общаться и развиваться.

2. Помощь в разработке модели предметной области

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

  1. Вспомогательный дизайн объекта: упомянутая ранее государственная машина может помочь провести деловые границы в бизнесе, и DDD Трудно четко проанализировать границы бизнеса каждого предприятия. Однако, если на бизнес-странице используется государственная машина, то это государственная Бизнес-граница машины почти в точности совпадает с бизнес-границей предприятия. И если эта государственная Если машина в своем состоянии, то государственная. машина, скорее всего, является дочерней сущностью текущей сущности. Если государственная машина Иметь несколько сыновейгосударственная Автомобиль находится в государственной собственности. машина, скорее всего, является совокупным корнем, также называемым корневым объектом. Возможно, этот анализ не всегда будет корректным, но он будет полезен новичкам, которые только начинают его использовать. DDD Если вы не знаете, с чего начать дизайн объекта, это хорошая идея.
  2. Вспомогательные помещениясобытиедизайн:государственная Помимо помощи в проектировании объекта, машина также полезна для проектирования полевых мероприятий. Потому что государственная Каждый переход состояния на машине соответствует действию, и это действие находится на государственной. на машине, если это государственная машина - это сущность, то это государственная Действия на машине могут вызвать полевые события. Хотя государственная машина Не может напрямую помочь на местахсобытиеиздизайн,Но можно сузить рамки оформления выездного мероприятия.,Потому что, как правило, событие домена будет генерироваться только тогда, когда состояние объекта изменится.
  3. Помогите с другим дизайном: Другими словами, потому что государственная. машинапозволяет нам найти бизнесизсущность,Поэтому иногда трудно отличить ценные объекты от сущностей в дизайне.,После подтверждения сущности,Тогда остальное должно быть объектом значения. Кроме того, после подтверждения сущности и совокупного корня,Граничный контекст бизнеса становится ясным.,Помогает с разграничением ограниченных контекстов.
3. Подведите итог

Что касается разработки DDD с поддержкой режима состояний, некоторые концепции конечных автоматов в чем-то похожи на некоторые концепции в DDD. Тем, кто не знаком с DDD, полезно сначала проанализировать модель состояния бизнеса, а затем использовать модель состояния для проектирования системы с использованием идей DDD. С этой точки зрения модель состояний может помочь новичкам понять DDD и снизить порог входа в DDD. Но если вы хотите эффективно использовать DDD, одной модели состояний недостаточно. DDD — это полноценная методология проектирования программного обеспечения, а конечный автомат — это всего лишь реализация модели состояний.

5. Наконец, подведите итог

1. Когда уместно использовать конечный автомат?

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

  1. Количество статусов: Если статус бизнеса превышает 3 , вы можете рассмотреть возможность использования государственной машина, если статус превышает 8 Необходимо использовать государственную машина。
  2. Существует множество ветвящихся процессов: Если состояние потока бизнес-процесса от начала до конца превышает 3 вида, необходимо использовать государственную машина。
  3. Статус процесса может часто меняться: если бизнес только начинается с базовой версии,После последующих итераций весь бизнес-процесс будет постепенно улучшаться.,В это время необходимо использовать государственную машину.
  4. Опыт развития: Если в команде несколько государственных машинаразвивать технику, потом использовать государственную машина-хороший вариант. Потому что обе государственные Машина увеличивает сложность кода, но для опытных разработчиков это не снижает их скорость и качество.
2. Что может дать нам государственная машина?

Как шаблон проектирования, конечный автомат, помимо того, что он технически делает наши изменения в коде более гибкими и простыми для расширения, его большим преимуществом является то, что он позволяет нам более четко понимать весь бизнес-процесс при проведении технического анализа. Лично я считаю, что вопрос не в том, использовать ли конечный автомат в проекте, а в том, чтобы использовать идею конечного автомата для анализа бизнес-процесса. ясно понятно, какой бы метод не использовался для реализации бизнеса, результат будет в два раза лучше, приложив вполовину меньше усилий.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose