
說明
1.將兩個原本不相關的類別結合在一起,然後利用兩個類別中的方法和屬性,輸出一份新的結果。
2.結構分為抽象類別、被提煉的抽象類別、實作類別、具體實作類別和客戶端程式碼。
實例
/**
* 顏色抽象類別 * Class Colour
*/
abstract class Colour
{
/**
* @return mixed
*/
abstract public function run();
}
/**
* 黑色 * Class Black
*/
class Black extends Colour
{
public function run()
{
// TODO: Implement run() method.
return '黑色';
}
}
/**
* 白色 * Class White
*/
class White extends Colour
{
public function run()
{
// TODO: Implement run() method.
return '白色';
}
}
/**
* 紅色 * Class Red
*/
class Red extends Colour
{
public function run()
{
// TODO: Implement run() method.
return '紅色';
}
}
/**
* 形狀抽象類別 * Class Shape
*/
abstract class Shape
{
/**
* 顏色 * @var Colour
*/
protected $colour;
/**
* Shape constructor.
* @param Colour $colour
*/
public function __construct(Colour $colour)
{
$this->colour = $colour;
}
/**
* @return mixed
*/
abstract public function operation();
}
/**
* 圓形 * Class Round
*/
class Round extends Shape
{
/**
* @return mixed|void
*/
public function operation()
{
// TODO: Implement operation() method.
echo $this->colour->run() . '圓形<br>';
}
}
/**
* 長方形 * Class Rectangle
*/
class Rectangle extends Shape
{
/**
* @return mixed|void
*/
public function operation()
{
// TODO: Implement operation() method.
echo $this->colour->run() . '長方形<br>';
}
}
/**
* 正方形 * Class Square
*/
class Square extends Shape
{
/**
* @return mixed|void
*/
public function operation()
{
// TODO: Implement operation() method.
echo $this->colour->run() . '正方形<br>';
}
}
// 客戶端程式碼// 白色圓形$whiteRound = new Round(new White());
$whiteRound->operation();
// 黑色正方形$blackSquare = new Square(new Black());
$blackSquare->operation();
// 紅色長方形$redRectangle = new Rectangle(new Red());
$redRectangle->operation();
// 運行結果白色圓形黑色正方形紅色長方形以上就是php橋接模式的介紹,希望對大家有幫助。