前言
生活中我們知道, 電腦主要是有顯卡, 主板 ,cpu, 內存模塊組成. 我們不管買什麼型號的顯卡都能在主板上使用. 組成電腦這個新的事物, 但是主板的迭代和 顯卡的迭代 對電腦這個抽象類沒有影響.
代碼實例
interface DisplayCard {
public function display(): void;
}
interface Cpu {
public function work(): void;
}
interface Computer {
public function setDisplayCard(DisplayCard $displayCard): void;
public function setCpu(Cpu $cpu): void;
public function work(): void;
}
// amd 顯卡
class AmdDisplayCard implements DisplayCard {
public function display(): void {
// todo
}
}
// nvidia 顯卡
class nvidiaDisplayCard implements DisplayCard {
public function display(): void {
// todo
}
}
class AmdCpu implements Cpu {
public function work(): void {
// todo
}
}
class InterCpu implements Cpu {
public function work(): void {
// todo
}
}
class HuaweiComputer implements Computer {
public function setDisplay(DisplayCard $card): void {
// todo
}
public funciton setCpu(Cpu $cpu): void {
// todo
}
public function work(): void {
// todo
}
}
// 使用
$huaweiOfficeComputer = new HuaweiComputer();
$huaweiOfficeComputer->setDisplay(new AmdDisplay());
$huaweiOfficeComputer->setCpu(new InterCpu());
$huaweiOfficeComputer->work();
$huaweiHighPerformanceComputer = new HuaweiComputer();
$huaweiHighPerformanceComputer->setDisplay(new nvidiaDisplayCard());
$huaweiHighPerformanceComputer->setCpu(new InterCpu());
$huaweiHighPerformanceComputer->work();
總結
橋接模式遵循oop思想, 對各自獨立的模塊實現瞭解耦, 模塊之間沒有耦合性, 在類組合的時候可以考慮使用.