Какой тип шаблона проектирования следует использовать для создания эмулятора? - PullRequest
3 голосов
/ 22 марта 2010

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

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

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

РЕДАКТИРОВАНИЕ:

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

Ответы [ 3 ]

4 голосов
/ 22 марта 2010

Здесь происходит две тесно связанные вещи.

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

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

1 голос
/ 22 марта 2010

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

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

1 голос
/ 22 марта 2010

Сборка программного обеспечения без учета «шаблонов». Шаблоны будут естественным образом выпадать из вашей работы, если они предназначены для этого. Создание вашего программного обеспечения в соответствии с предвзятыми представлениями о том, какие шаблоны будут стремиться сделать его более объемным и устойчивым к изменениям.

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

...