Я пишу библиотеку оберток вокруг базы данных SCADA , и у меня возник небольшой вопрос о дизайне кода хиппи. Это связано с тем, как я конвертирую предоставленные объекты БД в POCO.
Я звоню в БД, используя библиотеки .NET производителей.
Когда я выполняю вызовы БД, она передает объект типа DBObject
. Это может представлять что-либо в базе данных, и, как таковое, является довольно общим в информации, которую оно содержит. Любая пользовательская информация доступна из БД с помощью вызова метода DBObject.GetProperty()
, который требует активного подключения к БД.
Я хочу преобразовать этот базовый DBObject
во множество различных POCO, чтобы я мог передавать их через WCF и другие технологии.
В настоящее время у меня есть абстрактный базовый класс с именем ScadaObject
, который имеет ряд базовых свойств, которые я хочу содержать во всех POCO, и защищенный виртуальный метод с именем InternalFromDBObject(DBObject obj)
, который выполняет это создание из DBObject
в POCO. .
В моих производных типах я переопределяю этот метод, в качестве первого вызова вызываю base.InternalFromDBObject(obj)
, затем продолжаю загружать любую пользовательскую / специфическую информацию. Затем у меня в POCO есть статический метод с именем FromDBObject()
, который возвращает новый экземпляр этого POCO.
Это хороший способ делать вещи? Я не очень опытен в использовании заводов, поэтому я не уверен, что они подойдут. Могу ли я использовать другие шаблоны проектирования?