Режим моста:
Тип режима моста: структурный;
Режим моста эквивалентен использованию моста для соединения двух сторон. Это относится к использованию моста для соединения двух классов и установлению определенных отношений между двумя классами либо посредством наследования, либо посредством комбинации. связь между двумя классами; принцип синтеза и повторного использования, рекомендуется использовать комбинацию вместо наследования; режим моста может предотвратить усложнение системы слишком большим количеством подклассов;
Целью шаблона моста является понимание абстрактной части и конкретной части реализации класса;
нравиться : Разработать кроссплатформенный видеоплеер , Платформа имеет Android , iOS , Windows , Linux , Mac , Форматы, поддерживаемые плеером: MP4 , AVI , RMVB , FLV Формат ; В этом случае , Подходит для использования режима моста ;
Сценарии, применимые в режиме моста:
Одно или несколько независимо меняющихся измерений, и эти измерения необходимо независимо расширять; Абстрактная часть может быть расширена независимо, а конкретная часть реализации также может быть расширена независимо;
Преимущества режима моста:
Недостатки режима моста:
Область использования режима моста имеет определенные ограничения;
Режим моста и комбинированный режим:
Режим моста и режим адаптера:
Сценарий бизнес-логики : Разработать кроссплатформенный видеоплеер , Платформа имеет Android , iOS , Windows , Linux , Mac , Форматы, поддерживаемые плеером: MP4 , AVI , RMVB , FLV Формат ; В этом случае , Подходит для использования режима моста ;
платформа : Поддержка игроков Linux , Android платформа ; Формат видео : Поддержка игроков MP4 , FLV Формат видео ;
Он разделен на две части , Кусочек даплатформы , кусокда Формат видео ; Может продолжает расширяться , нравиться : Windows , iOS , MAC , Встроенная платформа ; Типы видео также можно постоянно расширять. , нравиться : H264 , H265 , MPEG ждать ; Оба могут быть расширены за счет собственных уровней. ;
Самое важное в режиме моста — отделить абстракцию от реализации и построить мост между абстракцией и реализацией посредством комбинирования;
package bridge;
public interface Vedio {
/**
* Открыть видео
* «Открыть» MP4 / FLV Формат видео
* видео ( Формат ) да абстрактный
* @return
*/
Vedio openVedio();
/**
* Просмотр информации о видео
*/
void showVedio();
}
package bridge;
/**
* FLV Формат видео
*/
public class FlvVedio implements Vedio {
@Override
public Vedio openVedio() {
System.out.println("Открыть FLV Формат видео");
return new FlvVedio();
}
@Override
public void showVedio() {
System.out.println("Текущий формат видеода FLV");
}
}
package bridge;
/**
* MP4 Формат
*/
public class MP4Vedio implements Vedio {
@Override
public Vedio openVedio() {
System.out.println("Открыть MP4 Формат видео");
return new MP4Vedio();
}
@Override
public void showVedio() {
System.out.println("Текущий формат видеода MP4");
}
}
package bridge;
/**
* платформадействоватьсистема абстрактныйдобрый */
public abstract class Platform {
/**
* Этот дарежим Основной код моста
* существовать Platform средняя школа найти способ общения Vedio
* Platform Подклассы Может также связаны Vedio Подкласс
*/
protected Vedio account;
public Platform(Vedio account) {
this.account = account;
}
/**
* Метод и Vedio Имена методов в
* Названия методов одинаковы Неасилаиз
* @return
*/
abstract Vedio openVedio();
}
package bridge;
public class LinuxPlatform extends Platform {
public LinuxPlatform(Vedio account) {
super(account);
}
@Override
Vedio openVedio() {
System.out.println("существовать Linux платформаигратьвидео");
return account;
}
}
package bridge;
public class AndroidPlatform extends Platform {
public AndroidPlatform(Vedio account) {
super(account);
}
@Override
Vedio openVedio() {
System.out.println("существовать Android платформа Открыть видео");
return account;
}
}
package bridge;
public class Main {
public static void main(String[] args) {
// существовать Linux открытая платформа FLV видео
Platform linuxPlatform = new LinuxPlatform(new FlvVedio());
Vedio linuxFlv = linuxPlatform.openVedio();
linuxFlv.showVedio();
System.out.println();
// существовать Android открытая платформа MP4 видео
Platform androidPlatform = new AndroidPlatform(new MP4Vedio());
Vedio androidMp4 = androidPlatform.openVedio();
androidMp4.showVedio();
}
}
Результат выполнения:
существовать Linux платформаигратьвидео
текущий Формат видеода FLV
существовать Android платформа Открыть видео
текущий Формат видеода MP4