Какой лучший шаблон дизайна для этого? - PullRequest
4 голосов
/ 16 марта 2012

У меня есть требование добавить слой между внешней библиотекой и клиентским кодом, чтобы у клиента был согласованный интерфейс с базовой библиотекой, и мы можем отключить библиотеку с минимумом изменений кода.

Например:

public interface IConsistentInterface
{
    void Foo(string bar);
    void Bar(string foo);
}

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

Это выглядит для меня как шаблон Адаптера, но разве это лучший подход к проблеме?

Спасибо.

1 Ответ

4 голосов
/ 16 марта 2012

Кажется, что шаблон Gateway может здесь хорошо вписаться.Однако, как вы говорите, шаблон Adapter также может хорошо работать для вас.На самом деле, если подумать об этом, кажется, что разница между этими двумя кодами в коде невелика.

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

...