設計模式整理--橋接模式

前言


生活中我們知道, 電腦主要是有顯卡, 主板 ,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思想, 對各自獨立的模塊實現瞭解耦, 模塊之間沒有耦合性, 在類組合的時候可以考慮使用.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章