Назначение и описание класса BotFactory. OsEngine.

BotFactory, как можно догадаться из названия – фабрика роботов. Подавляющее большинство объектов, используемое нами в реальном мире, так или иначе производятся на специально оборудованных для этого площадях, называемых заводами, фабриками, производствами и так далее. Так же и в OsEngine созданием экземпляров торговых роботов занимается специально созданный для этого объект.

Код класса расположен в файле BotFactory.cs в каталоге OsEngine\project\OsEngine\Robots\ 

Рис. 1. Расположение класса BotFactory в проекте.

Класс BotFactory инкапсулирует всю логику создания роботов в одном месте, но «заставить» фабрику иметь возможность создавать экземпляры роботов можно тремя способам:

  1. классический, прописывая логику создания объекта по имени класса;
  2. загрузка скрипта из вне;
  3. использование атрибута класса BotAttribute;

В последующих статьях мы подробнее поговорим о каждом из этих способов.

Рассмотрим все члены класса BotFactory:

BotsWithAttribute – приватное статическое поле только для чтения. Содержит словарь, в качестве ключа в котором выступает имя типа робота, в качестве значения – ссылка на объект-тип класса робота.

GetNamesStrategy – общедоступный статический метод, возвращает список имен роботов, которые создаются классическим способом и при помощи атрибута класса.  

GetStrategyForName – публичный статический метод, инкапсулирует логику создания роботов классическим способом и при помощи атрибута класса. Принимает следующие параметры:

  1. nameClass - имя класса, экземпляр которого нужно создать;
  2. name - уникальное имя для экземпляра робота;
  3. startProgram - тип программы, инициировавшей запрос к методу;
  4. isScript - флаг, указывает, нужно ли подгружать код робота в качестве скрипта из вне;

GetTypesWithBotAttribute – приватный статический метод, инициализирует поле BotsWithAttribute.

GetScriptsNamesStrategy – публичный статический метод, возвращает список имен роботов, которые создаются путем загрузки из файлов в виде скриптов.

GetFullNamesFromFolder – приватный статический метод, возвращает список строк с указанием пути к коду скриптов.

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

  1. nameClass - имя класса, экземпляр которого нужно создать;
  2. name - уникальное имя для экземпляра робота;
  3. startProgram - тип программы, инициировавшей запрос к методу;

Serialize  приватный статический метод, генерирует, затем компилирует код скрипта из файла.

GetDllsPathFromFolder  приватный статический метод, возвращает путь к dll библиотекам, которые необходимы для компиляции кода скрипта.

ReadFile  приватный статический метод, считывает по заданному пути код из текстового файла.

GetNamesStrategyWithParametersSync  публичный статический метод, используется оптимизатором, синхронизирует процесс получения списка имен классов роботов, которые имеют оптимизируемые параметры.

NeadToReload – публичное статическое поле типа bool, флаг, указывающий на необходимость перезагрузки списка с именами классов роботов.

LoadBotsNames  приватный статический метод, загружает в переменную список имен роботов, имеющих оптимизируемые параметры.

SaveBotsNames  приватный статический метод, сохраняет в хранилище список имен роботов, имеющих оптимизируемые параметры.

LoadNamesWithParam  приватный статический метод, сохраняет в переменную список имен классов роботов, которые имеют оптимизируемые параметры.

LoadNamesWithParamEndEvent – общедоступное статическое событие, извещает подписчиков о готовности списка ботов с параметрами.

 

13:03
150
FAQ

Комментарии

Нет комментариев. Ваш будет первым!