zoukankan      html  css  js  c++  java
  • 桥接模式

    桥梁模式(Bridge)也叫做桥接模式,用于将抽象和实现解耦,使得两者可以独立地变化。桥梁模式完全是为了解决继承的缺点而提出的设计模式。
    系统设计时,发现类的继承有 N 层时,可以考虑使用桥梁模式。使用桥梁模式时主要考虑如何拆分抽象和实现,并不是一涉及继承就要考虑使用该模式。
    在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。

     

     1 <?php
     2 /**
     3  * 我们以汽车制造厂生产汽车为例,Vehicle 是抽象生产类,Motorcycle 和 Car 是具体实现子类,
     4  * 制造汽车分为生产和组装两部分完成,这意味着我们要在制造方法  manufacture 中实现生产和组装工作,
     5  * 这里我们将这一实现过程分离出去成为一个新的接口 Workshop,由该接口的实现类 Produce 和 Assemble 负责具体生产及组装,
     6  * 从而实现抽象(Vehicle)与实现(Workshop)的分离,让两者可以独立变化而不相互影响:
     7  */
     8 
     9 abstract class Vehicle
    10 {
    11     protected $workShop1;
    12     protected $workShop2;
    13 
    14     protected function __construct(Workshop $workShop1, Workshop $workShop2)
    15     {
    16         $this->workShop1 = $workShop1;
    17         $this->workShop2 = $workShop2;
    18     }
    19 
    20     public function manufacture()
    21     {
    22     }
    23 }
    24 
    25 class Motorcycle extends Vehicle
    26 {
    27     public function __construct(Workshop $workShop1, Workshop $workShop2)
    28     {
    29         parent::__construct($workShop1, $workShop2);
    30     }
    31 
    32     public function manufacture()
    33     {
    34         print 'Motorcycle ';
    35         $this->workShop1->work();
    36         $this->workShop2->work();
    37     }
    38 }
    39 
    40 class Car extends Vehicle
    41 {
    42     public function __construct(Workshop $workShop1, Workshop $workShop2)
    43     {
    44         parent::__construct($workShop1, $workShop2);
    45     }
    46 
    47     public function manufacture()
    48     {
    49         print 'Car ';
    50         $this->workShop1->work();
    51         $this->workShop2->work();
    52     }
    53 }
    54 
    55 
    56 
    57 
    58 interface Workshop
    59 {
    60     public function work();
    61 }
    62 
    63 class Produce implements Workshop
    64 {
    65     public function work()
    66     {
    67         print 'Produced ';
    68     }
    69 }
    70 
    71 class Assemble implements Workshop
    72 {
    73     public function work()
    74     {
    75         print 'Assembled';
    76     }
    77 }
    View Code
  • 相关阅读:
    hdu 4685(强连通分量+二分图的完美匹配)
    图的连通性问题
    poj 1904(强连通分量+完美匹配)
    poj 2186 "Popular Cows"(强连通分量入门题)
    poj 1236(强连通分量分解模板题)
    EOJ2018.10 月赛
    21.Merge Two Sorted Lists
    20.Valid Parentheses
    19.Remove Nth Node From End of List
    18.4Sum
  • 原文地址:https://www.cnblogs.com/hangtt/p/6262607.html
Copyright © 2011-2022 走看看