Относительно реализации шаблона «Мост» в C # - PullRequest
1 голос
/ 10 сентября 2011

Я пытаюсь реализовать шаблон Bridge в моем приложении, и я столкнулся с проблемой, которую не могу решить:
Предположим, у меня есть общий класс «Абстракция», в котором я хочу иметь несколько инструментов, назовите их ImpA & ImpB.
Когда я делаю это:

Abstraction a = new Abstraction(new ImpA);

а.

После точки я ожидал увидеть список общедоступных свойств / методов класса ImpA, но не смогу добраться до них, пока не поместил их в саму абстракцию.
Я абсолютно не хочу помещать все методы в абстракцию, потому что хочу, чтобы каждая реализация была независимой и не имела бы всех в 1 классе.
Что мне здесь не хватает ??

1 Ответ

5 голосов
/ 10 сентября 2011

Цель класса Abstraction - абстрагироваться от реализации (ImpA) в вашем случае. Это означает, что класс Abstraction должен определять интерфейс (методы), который должен использовать клиент, а затем распространять или «преобразовывать» эти вызовы в операции над реализацией. Это, конечно, означает, что вам нужно реализовать методы, составляющие ваш публичный интерфейс, в классе Abstraction, и они должны вызывать реализацию.

Если вы просто хотите, чтобы фактический класс реализации изменился, но интерфейс их был одинаковым и все были доступны клиенту, просто определите интерфейс, описывающий открытые методы вашего класса "ImpA", и используйте интерфейс от клиента .

Описание .NET-шаблона моста можно найти здесь: http://www.dofactory.com/Patterns/PatternBridge.aspx#_self1

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