Определение моста: разделяет абстракцию и поведение и объединяет каждую независимо, но динамически.
Зачем использовать режим моста
Как правило, когда абстрактный класс или интерфейс имеет несколько конкретных реализаций (конкретный подкласс), взаимосвязь между этими бетонами может быть следующей:
1. Эти конкретные реализации являются параллельными.
2. В практическом применении часто можно концептуально перекрывать среди этих нескольких конкретных классов. Затем нам нужно разделить общий реферат и общее поведение.
Например, в качестве примера существует два типа кофе: средние и большие чашки, а также различные виды молока и молока. Если используется простое наследство, существует концепция перекрытия между этими четырьмя конкретными реализациями (миллион стаканов с молоком без молока), потому что есть средние чашки с молоком, и есть средние чашки без молока. Это также в среднем чаше. Затем мы используем режим Bridge для его реализации.
Как реализовать режим моста
Кофе, упомянутый выше, является примером. Первоначально мы планировали разработать только один интерфейс (абстрактный класс).
Давайте посмотрим на код интерфейса абстрактной части:
Кода -копия выглядит следующим образом:
открытый абстрактный класс кофе {
CoffeeImp CoffeeImp;
public void setCoffeeimim () {
this.coffeeimp = coffeeimpsingleton.getthecoffeimp ();
}
Public CoffeeImp getCoffeeImp () {return this.coffeeimp;}
Public Abstract void pourcoffee ();
}
CoffeeImp - это поведенческий интерфейс без добавления молока.
Кода -копия выглядит следующим образом:
открытый абстрактный класс кофеим {
Public Abstract void pourcoffeeimp ();
}
Теперь у нас есть два абстрактных класса, мы наследуем их соответственно и внедряем конкретный класс:
Кода -копия выглядит следующим образом:
// Средняя чашка
Public Class MediumCoffee расширяет кофе {
public mediumcoffee () {setCoffeeemip ();}
public void pourcoffee () {
CoffeeImp CoffeeImp = this.getCoffeeimp ();
// Мы используем количество повторений, чтобы объяснить, делать ли средняя чашка или большая чашка.
coffeeimp.pourcoffeeimp ();
}
}
}
Кода -копия выглядит следующим образом:
// большая чашка
Public Class SuperSizeCoffee расширяет кофе {
public supersizecoffee () {setCoffeeimemp ();}
public void pourcoffee () {
CoffeeImp CoffeeImp = this.getCoffeeimp ();
// Мы используем количество повторений, чтобы объяснить, делать ли среднюю чашку или большую чашку.
coffeeimp.pourcoffeeimp ();
}
}
}
Выше приведено конкретные реализации средней чашки и большую чашку соответственно.
Кода -копия выглядит следующим образом:
// Добавить молоко
Public Class MilkCoffeeimp расширяет кофеист {
Milkcoffeeimimp () {}
public void pourcoffeeimp () {
System.out.println («Добавлены вкусное молоко»);
}
}
// не добавлено молоко
Public Class FragrantCoffeeimp Extens CoffeeImp {
Fragrantcoffeeimimp () {}
public void pourcoffeeimp () {
System.out.println («Ничего добавленного, свежий аромат»);
}
}
Мы уже установили базовую структуру модели моста.
1. Добавить молоко в среднюю чашку
2. в средней стаканке не добавляется молоко
3. Добавить молоко в большую чашку
4. Большая чашка без молока
Давайте посмотрим, как он динамически объединен.
Кода -копия выглядит следующим образом:
Public Class CoffeeImpsingleton {
Частный статический кофеист CoffeeImp;
Public CoffeeImpsingleton (CoffeeImp CoffeeImpin)
{this.coffeeemp = coffeeimpin;}
Public Static CoffeeImp getTheCoffeeMip () {
вернуть кофеим;
}
}
Давайте посмотрим, как выходит средняя чашка молока и большая чашка молока:
// вынуть молоко
Кофеимпсинглтон кофеимпсинглтон = новый кофеимпсинглтон (new Milkcoffeeimp ());
// средняя чашка с молоком
MediumCoffee MediumCoffee = new MediumCoffee ();
mediumcoffee.pourcoffee ();
// большая чашка молока
Supersizecoffee supersizecoffee = new supersizecoffee ();
supersizecoffee.pourcoffee ();
Примечание. Классы исполнения схемы моста, такие как кофеист и кофе, являются отношениями один на один, и правильно создание кофеима является ключом к этой схеме.
Применение мостового режима в EJB
В EJB существует шаблон объекта доступа данных (DAO), который отделяет бизнес -логику от конкретных ресурсов данных, поскольку различные базы данных имеют различные операции базы данных. Поведение, которое управляет различными базами данных, независимо от абстрагировано в поведенческий интерфейс DAO следующим образом:
1. Объект бизнеса (похожий на кофе)
Внедрить некоторые абстрактные бизнес -операции: например, поиск пользователя для размещения всех заказов. Daoimplementor используется для операций базы данных.
2. Объект доступа к Data (аналогично кофеим)
Некоторые абстрактные операции по ресурсам базы данных.
3. Daoimplementor, такой как OrderDaocs, OrderDaooracle, OrderDaosybase (аналогично MilkCoffeeimp FragrantCoffeeimp)
Конкретные операции базы данных, такие как «Вставка в» и другие утверждения, OrderDaooracle - Oracle OrderDaosybase, база данных SYBASE.
4. База данных (база данных Cloudscape, Oracle или Sybase через JDBC API)