BotFactory, как можно догадаться из названия – фабрика роботов. Подавляющее большинство объектов, используемое нами в реальном мире, так или иначе производятся на специально оборудованных для этого площадях, называемых заводами, фабриками, производствами и так далее. Так же и в OsEngine созданием экземпляров торговых роботов занимается специально созданный для этого объект.
Код класса расположен в файле BotFactory.cs в каталоге OsEngine\project\OsEngine\Robots\
Рис. 1. Расположение класса BotFactory в проекте.
Класс BotFactory инкапсулирует всю логику создания роботов в одном месте, но «заставить» фабрику иметь возможность создавать экземпляры роботов можно тремя способам:
В последующих статьях мы подробнее поговорим о каждом из этих способов.
Рассмотрим все члены класса BotFactory:
BotsWithAttribute – приватное статическое поле только для чтения. Содержит словарь, в качестве ключа в котором выступает имя типа робота, в качестве значения – ссылка на объект-тип класса робота.
GetNamesStrategy – общедоступный статический метод, возвращает список имен роботов, которые создаются классическим способом и при помощи атрибута класса.
GetStrategyForName – публичный статический метод, инкапсулирует логику создания роботов классическим способом и при помощи атрибута класса. Принимает следующие параметры:
GetTypesWithBotAttribute – приватный статический метод, инициализирует поле BotsWithAttribute.
GetScriptsNamesStrategy – публичный статический метод, возвращает список имен роботов, которые создаются путем загрузки из файлов в виде скриптов.
GetFullNamesFromFolder – приватный статический метод, возвращает список строк с указанием пути к коду скриптов.
CreateScriptStrategyByName – публичный статический метод, инкапсулирует логику создания экземпляров роботов из файлов скриптов. Принимает следующие параметры:
Serialize – приватный статический метод, генерирует, затем компилирует код скрипта из файла.
GetDllsPathFromFolder – приватный статический метод, возвращает путь к dll библиотекам, которые необходимы для компиляции кода скрипта.
ReadFile – приватный статический метод, считывает по заданному пути код из текстового файла.
GetNamesStrategyWithParametersSync – публичный статический метод, используется оптимизатором, синхронизирует процесс получения списка имен классов роботов, которые имеют оптимизируемые параметры.
NeadToReload – публичное статическое поле типа bool, флаг, указывающий на необходимость перезагрузки списка с именами классов роботов.
LoadBotsNames – приватный статический метод, загружает в переменную список имен роботов, имеющих оптимизируемые параметры.
SaveBotsNames – приватный статический метод, сохраняет в хранилище список имен роботов, имеющих оптимизируемые параметры.
LoadNamesWithParam – приватный статический метод, сохраняет в переменную список имен классов роботов, которые имеют оптимизируемые параметры.
LoadNamesWithParamEndEvent – общедоступное статическое событие, извещает подписчиков о готовности списка ботов с параметрами.
Комментарии