桥梁模式(Bridge)
将抽象与实现解耦,使它们都可以独立的变化。
主要解决: 桥梁模式完全是为了解决继承的缺点而提出的设计模式。在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。
![](https://img.haomeiwen.com/i2281730/b75e241f0de8e0a0.png)
![](https://img.haomeiwen.com/i2281730/d58ae6d4abf5d9b6.png)
代码示例:
//颜色接口和实现
interface Color {
public functino setColor() {};
}
class Red implements Color {
public functino setColor() {
return "red";
}
}
class Black implements Color {
public functino setColor() {
return "black";
}
}
//图形接口和实现
interface Shap {
public function draw(x, y, z);
}
class Cirlce implements Shap {
public function setIndex()
return [x, y, z] ;
}
}
abstract AbstractDraw {
private $color = '';
private $shap = [0,0,0];
public function setColor(interface Color){};
public function setShap(interface Shap){};
public function draw() {};
}
//画图
class Draw extends AbstractDraw{
public function setColor(interface Color){
$this->color = Color.setColor();
}
public function setShap(interface Shap){
$this->shap = Shap.setIndex();
}
public function draw() {
echo $this->color. 'x: ' . $this->shap[0] . 'y:' $this->shap[1] . 'z:' .$this->shap[2];
}
}
网友评论