Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Паттерн мост / 4 сообщений из 4, страница 1 из 1
09.11.2016, 18:57
    #39344426
.NET
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Паттерн мост
Читаю главу про паттерн "Мост" в GoF. Там говорится, что паттерн мост решает проблему зависимости клиента от реализации. Но клиент всё равно должен знать какой конкретной реализацией надо инициализировать абстракцию.

Там при описании примера с оконными системами говорится: "Только сама реализация окна должна зависеть от платформы, на которой работает приложение. Потому в клиентском коде не может быть никаких упоминаний о платформах". Но как этого избежать если при создании класса IconWindow(Refined Abstraction), например, его надо параметризовать объектом какой-то конкретной реализации, например, XWindowImp(Concret Implementor).
...
Рейтинг: 0 / 0
09.11.2016, 19:21
    #39344437
.NET
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Паттерн мост
Хотя они там частично отвечают на этот вопрос.
Предполагается, что Window(Abstraction) получает нужную реализацию от некоей фабрики,
о которой в самом паттерне не говорится ничего.
Тогда о платформе должен знать тот, кто создаёт эту фабрику.
...
Рейтинг: 0 / 0
09.11.2016, 20:01
    #39344457
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Паттерн мост
.NETЧитаю главу про паттерн "Мост" в GoF. Там говорится, что паттерн мост решает проблему зависимости клиента от реализации. Но клиент всё равно должен знать какой конкретной реализацией надо инициализировать абстракцию.

Там при описании примера с оконными системами говорится: "Только сама реализация окна должна зависеть от платформы, на которой работает приложение. Потому в клиентском коде не может быть никаких упоминаний о платформах". Но как этого избежать если при создании класса IconWindow(Refined Abstraction), например, его надо параметризовать объектом какой-то конкретной реализации, например, XWindowImp(Concret Implementor).

У тебя есть абстрактная графическая подсистема, реализованная в виде интерфейса или абстрактного базового класса BaseWindowSystem. В этой абстракции ты собираешь все методы, которые тебе нужны для отрисовки твоей графики, не задумываясь о конкретной графической подсистеме. Потом ты создаешь сколько тебе нужно классов (напр Application), в которых будет содержаться зависимость BaseWindowSystem. Каком образом ты будешь эту зависимость внедрять - это не проблема паттерна, возможно зависимость будет внедряться каким-то DI-фреймворком. Идея в том, что ты можешь наделать хоть сколько реализаций BaseWindowSystem (напр WaylandWindowSystem) и с каждой из них программа будет работать, т.к. реализуется контракт. Именно в этом смысл паттерна, как именно ты ты будешь выбирать конкретную реализацию - неважно, может в твоей программе она будет выбираться простым выбором по условию, а может на основании файла-конфигурации или ты скомпилируешь разные варианты программы с разными реализациями, главное, что для этого тебе не придется менять ни BaseWindowSystem, ни Application, ни WaylandWindowSystem.
...
Рейтинг: 0 / 0
11.11.2016, 18:59
    #39345901
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Паттерн мост
.NET,


пишется для этого фабрика, которая для каждого интерфейса создает нужную типовую реализацию, способную работать в данных условиях.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Паттерн мост / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]