Latest web development tutorials

Режим моста

Мост (Bridge) используется для достижения развязкой и абстракции, так что эти два могут изменяться независимо друг от друга. Этот тип шаблонов проектирования принадлежат структурной модели, обеспечивая абстракции структурированной и преодоление между ними для достижения развязку.

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

Мы следующими примерами для демонстрации использования режима моста (мост шаблон). Что вы можете использовать один и тот же метод, но разные абстрактные классы мостовые класс реализации рисовать круги разных цветов.

введение

Намерение: абстракция и реализация части разделения, так что они могут изменяться независимо друг от друга.

Главное Решение: В различных обстоятельствах могут меняться, наследование классов может привести к взрыву, это не является гибким расширение.

Когда использовать: Внедрение системы классификации может иметь несколько углов, каждый угол может измениться.

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

Код ключа: реализация абстрактного класса зависит от класса.

Примеры применения: 1, возрождается из свиньи свиньи маршала полога реинкарнацию, перевоплощение земного механизма делится на два уровня, а именно: души и тела, бывших соответствует абстракции, что эквивалентно реализуемы.Существа, делегируя функции, вызова функции физических объектов, такие существа могут быть динамически выбраны. 2, выключатель на стене, вы можете увидеть переключатель является абстрактным, а не бетонная труба внутри, как достичь.

Преимущества: 1, аннотация и достижения разделения.2, отличная масштабируемость. 3, детали реализации прозрачным для клиента.

Недостатки: введение режима моста увеличит трудности понимания и дизайна системы, отношения полимеризации , построенной на уровне абстракции, требуя от разработчика для абстрактного дизайна и программирования.

Сценарии использования: 1, если система необходима между абстракцией и конкретной роли члена роли , чтобы добавить больше гибкости , чтобы избежать создания статического наследования связи между этими двумя уровнями, через режим моста таким образом , чтобы они слой абстракции установить отношения.2, для тех, кто не хочет использовать систему в порядке наследования многоуровневой или наследования привело к резкому увеличению числа системных классов, режим моста особенно применим. 3, класс есть два независимых измерения изменения, и эти два аспекта должны быть расширены.

Примечание: Для изменения двух независимых измерений, используя режим моста легко сделать.

реализация

Мы имеем в качествеDrawAPIинтерфейса моста и реализуемогоDrawAPIкласса интерфейсный объектRedCircle,GreenCircle.Формаявляется абстрактным классом, объектом использованияDrawAPI.BridgePatternDemo, наши демонстрационные классы используют классShape, чтобы рисовать круги разных цветов.

Режим моста UML диаграмма

Шаг 1

Создать мост, который реализует интерфейс.

DrawAPI.java

Открытый интерфейс DrawAPI {
   общественного недействительными DrawCircle (радиус INT, INT х, Int у);
}

Шаг 2

Создать объект реализации мостовую реализациюDrawAPIкласса интерфейса.

RedCircle.java

Открытый класс RedCircle реализует DrawAPI {
   @Override
   общественного недействительными DrawCircle (радиус INT, INT х, Int у) {
      System.out.println ( "Рисунок Круг [цвет: красный, радиус:"
         + Радиус + ", х:" + х + "," + у + "]");
   }
}

GreenCircle.java

Открытый класс GreenCircle реализует DrawAPI {
   @Override
   общественного недействительными DrawCircle (радиус INT, INT х, Int у) {
      System.out.println ( "Рисунок Круг [цвет: зеленый, радиус:"
         + Радиус + ", х:" + х + "," + у + "]");
   }
}

Шаг 3

DrawAPIиспользовать интерфейс для создания абстрактного классаShape.

Shape.java

общественного абстрактного класса Shape {
   защищенный DrawAPI drawAPI;
   Форма защищенной (DrawAPI drawAPI) {
      this.drawAPI = drawAPI;
   }
   общественности абстрактной юридической силы ничья ();	
}

Шаг 4

Создать класс сущностей реализует интерфейсShape.

Circle.java

Открытый класс Circle расширяет Shape {
   частное INT х, у, радиус;

   общественный круг (INT х, у INT, радиус INT, DrawAPI drawAPI) {
      супер (drawAPI);
      this.x = х;  
      this.y = у;  
      this.radius = радиус;
   }

   общественного недействительными ничья () {
      drawAPI.drawCircle (радиус, х, у);
   }
}

Шаг 5

Использование классаShapeиDrawAPIрисовать круги разных цветов.

BridgePatternDemo.java

Открытый класс BridgePatternDemo {
   государственной статической силы основных (String []) {агдз
      Форма redCircle = новый круг (100100, 10, новый RedCircle ());
      Форма GreenCircle = новый круг (100100, 10, новый GreenCircle ());

      redCircle.draw ();
      greenCircle.draw ();
   }
}

Шаг 6

Проверьте выход.

Рисунок Круг [цвет: красный, радиус: 10, х: 100, 100]
Рисунок Круг [цвет: зеленый, радиус: 10, X: 100, 100]