Шаблон фабрики, где конкретные классы находятся на отдельных DLL - PullRequest
3 голосов
/ 21 мая 2019

Я написал dll, который подключается к некоторому стороннему API, каждая DLL имеет методы: SignIn, Upload, Download, SignOut.

Мой менеджер попросил меня реализоватьфабричный шаблон, потому что в будущем я буду писать больше dll для других API, которые имеют те же методы signuture.

На данный момент у меня есть:

DLL 1: OneDrive

У него есть класс с методами: SignIn, Upload, Download, SignOut.

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

DLL 2: DropBox

Имеется также класс с методами: SignIn, Upload, Download, SignOut.

Мой вопрос: как мне реализовать шаблон проектирования фабричных методов в этом разделе?

Что я сделал: я создал другую DLL («Новая DLL»)эта DLL будет содержать "FactoryClass", проблема в том, что создатель в этой dll должен возвращать тип "OneDrive" или "DropBox", что означает, что я должен добавить ссылку на первые два dll ("OneDrive" и "DropBox ").

Но классы" OneDrive "и" DropBox "должны реализовывать некоторый класс abstrct в новой dll, что означает, что я должен добавить ссылку на новую dll.

, но это не таквозможно, потому что это круговая зависимость (ошибка Visual Studio)

1 Ответ

0 голосов
/ 21 мая 2019

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

Это частично решается интерфейсом (или абстрактным классом), объявленным в этой центральной сборке, но существует дополнительная проблема создания конкретных реализаций без прямой ссылки на зависимости.

Эту проблему можно решить, разрешив вашей фабрике вести реестр доступных реализаций. Вы можете найти пример простой фабрики с регистрацией в этом другом вопросе переполнения стека

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...