[Php шаблоны проектирования] Режим моста

 Определение:
  Абстракции и разделение, так что они могут быть изменены независимо друг от друга. Это достигается за счет комбинации отношений вместо наследования и абстракции реализованы , чтобы уменьшить размеры двух переменных степени сцепления.

 Роль:
  абстракция (Абстракция) роль: определение абстрактного класса и содержит ссылку на реализацию объекта.
  Автореф (рафинированная) Абстракция роли: роль абстракции является подклассом, реализовать бизнес - методу в родительском классе, и с помощью комбинации методов для достижения деловых отношений , призывающих роль.
  Реализация (реализатор) роли: определение роли реализации интерфейса для расширенного абстрактного вызова ролей.
  Конкретная реализация (Concrete Implementor) роль: добиться отводилась роль конкретной реализации интерфейса.

  Например:

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

абстрактный  класс Дорога {
     общественный  $ автомобиля ;
    общественная  функция __construct (Car $ автомобиля ) {
         $ это -> автомобиль = $ автомобиль ; 
    } 
    Общественных  абстрактные  функции запуска (); 
} 

Класс Speedway расширяет дорогу {
     общественная  функция Run () {
         эхо  это $ -> автомобиль-> имя "работает на Speedway \ п". ; 
    } 
} 

Класс Street простирается дорога {
     общественных  функций Run () {
        Эхо  этого $ -> автомобиль-> имя «работать на улице \ п». ; 
    } 
} 

Абстрактный  класс автомобилей {
     общественности  $ имя ; 
} 

Класс SmallCar распространяется автомобилей {
     общественности  функция __construct () {
         $ это -> имя = "SmallCar" ; 
    } 
} 

Класс Bus расширяет Car {
     общественная  функция __construct () {
         $ это -> имя = "Bus" ; 
    } 
} 

$ Small_car = новый SmallCar ();
$ Speedway = новый Speedway ( $ small_car );
$ Speedway -> Run (); 

$ автобус = новый автобус ();
$ Street = новая улица ( $ автобус );
$ Street -> Run ();

  Сценарии использования:

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




рекомендация

отwww.cnblogs.com/itsuibi/p/10954306.html