Какой тип шаблона проектирования следует использовать для создания эмулятора?

Я запрограммировал эмулятор, но у меня есть некоторые сомнения относительно его правильной организации, потому что, я вижу, что у него есть некоторые проблемы с подключением классов (CPU ↔ Machine Board). Например: порты ввода-вывода, прерывания, связь между двумя или более процессорами и т.д.

Мне нужно, чтобы эмулятор имел лучшую производительность и хорошее понимание кода.

PD: Извините за мой плохой английский.

Редакция:

Запрос нескольких шаблонов.

3 ответа

У вас есть два тесно связанных дела.

  • Эмулятор представляет собой набор определений Command. Каждая вещь, которую может сделать эмулятор, - это команда. Некоторые команды представляют собой вложенные последовательности команд.

  • Эмулятор имеет ряд внутренних состояний. Каждая вещь, которую эмулятор выполняет, обновляет один или несколько объектов состояния.


Сначала просмотрите wiki. Кажется, это дает некоторую точку зрения на искусство эмуляции. Во-вторых, я бы посмотрел, как QEMU или DOSBox структурированы. Также взгляните на SourceForge. Простой запрос предоставляет следующие программные эмуляторы:

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


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

(Если вы еще этого не сделали, загрузите инфраструктуру модульного тестирования для своего языка и используйте ее для руководства разработкой!)

licensed under cc by-sa 3.0 with attribution.