В текущем (C #) проекте у нас есть сторонняя сборка, которая содержит неинтерфейсный объект соединения.Используя IoC и т. Д., Мы можем внедрить этот конкретный экземпляр в наш код, но он превращает кошмар в юнит-тестирование и т. Д. Мы используем MoQ в качестве нашей среды моделирования, поэтому в идеале можно было бы использовать интерфейс для отработкии мы не хотим идти по пути использования чего-то вроде Moles , потому что мы хотели бы минимизировать технологии.
Если мы создаем интерфейс для имитации желаемой функциональности стороннего соединенияobject, а затем создайте реализатор этого интерфейса, содержащий экземпляр стороннего объекта, тогда это позволит нашему коду работать с интерфейсом, и наши IoC и модульные тесты будут счастливы.Тем не менее, в дискуссии мы разошлись по кругу относительно того, какой это шаблон дизайна на самом деле!
Итак, вопрос в том, " Является ли описанная выше ситуация и проиллюстрирована в следующем коде: "
- Адаптер поскольку мы предоставляем оболочку для существующих функций.
- Proxy , поскольку мы предоставляем интерфейс для чего-то другого.
- Фасад , поскольку в рамках этого процесса мы будем предоставлять упрощенный интерфейс для более крупного объекта.
namespace ExampleCode
{
public interface IConnector
{
void Open();
}
public class ConnectorWrapper : IConnector
{
ThirdPartyConnector _instance;
public ConnectorWrapper(ThirdPartyConnector instance)
{
_instance = instance;
}
void Open()
{
_instance.Open();
}
}
}