Какой это шаблон проектирования?

В текущем (C #) проекте у нас есть сторонняя сборка, которая содержит объект подключения без интерфейса. Используя IoC и т. Д., Мы можем внедрить этот конкретный экземпляр в наш код, но это оказывается кошмаром для модульного тестирования и т. Д. Мы используем MoQ в качестве фреймворка для фиксации, поэтому в идеале можно было бы использовать интерфейс для работы. и мы не хотим идти по пути использования чего-то вроде Moles , потому что мы хотели бы минимизировать количество технологий.

Если мы создадим интерфейс, имитирующий желаемую функциональность стороннего объекта подключения, а затем создадим реализатор этого интерфейса, содержащий экземпляр стороннего объекта, то это позволит нашему коду работать с интерфейсом, а также с нашим IoC и юнит-тесты будут счастливы. Однако в ходе обсуждения мы ходили по кругу, выясняя, какой это шаблон дизайна на самом деле!

Итак, вопрос: « Ситуация, описанная выше и проиллюстрированная в приведенном ниже коде, a: »

  1. Адаптер , поскольку мы предоставляем оболочку для существующих функций.
  2. Прокси
  3. Прокси , поскольку мы обеспечиваем интерфейс для чего-то еще.
  4. Фасад потому что как часть процесса мы будем предоставлять упрощенный интерфейс для более крупного объекта.

namespace ExampleCode
{
    public interface IConnector
    {
       void Open();
    }

    public class ConnectorWrapper : IConnector
    {
       ThirdPartyConnector _instance;

       public ConnectorWrapper(ThirdPartyConnector instance)
       {
          _instance = instance;
       }

       void Open()
       {
         _instance.Open();
       }
    }
}

6
задан badp 8 September 2010 в 13:12
поделиться