Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Уривок коду 7.1. Гляньмо на BuildingCompany

interface IBuldingCompany{ void BuildFoundation(); void BuildRoom(); void BuildRoof(); IWallCreator WallCreator { get; set; }} class BuldingCompany : IBuldingCompany{ public void BuildFoundation() { Console.WriteLine("Foundation is built.{0}", Environment.NewLine); } public void BuildRoom() { WallCreator.BuildWallWithDoor(); WallCreator.BuildWall(); WallCreator.BuildWallWithWindow(); WallCreator.BuildWall(); Console.WriteLine("Room finished.{0}", Environment.NewLine); } public void BuildRoof() { Console.WriteLine("Roof is done.{0}", Environment.NewLine); } public IWallCreator WallCreator { get; set; }}

І що тут цікавого? Відповідь — властивість WallCreator, яка якраз і є своєрідним мостом до реалізації.
Ще раз замислимося над означенням і прикладом. Методи BuildFoundation та BuildRoof повністю знаходяться в абстракції і можуть змінюватися, навіть метод BuildRoom і той може змінитися, проте він не виконує повноцінну роботу – він надіється на імплементацію, яка прийде по мосту і зробить потрібну роботу потрібним чином.

Уривок коду 7.2. Глянемо на "міст" в дії

// Ми маємо дві бригади – одна працює із цеглою, інша із бетономvar brickWallCreator = new BrickWallCreator();var conctreteSlabWallCreator = new ConcreteSlabWallCreator(); var buildingCompany = new BuldingCompany();buildingCompany.BuildFoundation(); buildingCompany.WallCreator = conctreteSlabWallCreator;buildingCompany.BuildRoom(); // Компанія може легко переключитися на іншу команду, яка буде будувати// стіни із інших матеріалівbuildingCompany.WallCreator = brickWallCreator;buildingCompany.BuildRoom();buildingCompany.BuildRoom(); buildingCompany.BuildRoof();

Хіба це не чудово? Вивід, я припускаю, є інтуїтивним, проте оскільки я не наводив реалізацій класів BrickWallCreator та ConcreteSlabWallCreator подивимося на нього.

Вивід:

Foundation is built. Concrete slab wall with door. Concrete slab wall. Concrete slab wall with window. Concrete slab wall. Room finished. Brick wall with door. Brick wall. Brick wall with window. Brick wall. Room finished. Brick wall with door. Brick wall. Brick wall with window. Brick wall. Room finished. Roof is done.

UML-діаграма зображає структуру цього дизайн патерну. Дивлячись на діаграму, стає зрозумілою його назва.

UML-діаграма 5. Міст


Читайте також:

  1. Уривок з статті у журналі „Народ”, 1890 р.
  2. Уривок зі статуту про судову реформу




Переглядів: 658

<== попередня сторінка | наступна сторінка ==>
Міст — Bridge | Фасад — Facade

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.001 сек.