
Bridge 模式:抽象與實作各自演進
Bridge 模式用組合取代繼承,讓抽象層與實作層可以獨立變化。
classDiagram class Payment { <<Abstraction>> -processor : PaymentProcessor +process(amount)* Result } class OnlinePayment { +process(amount) Result } class PaymentProcessor { <<Implementation>> +processPayment(amount)* Result } class CreditCardProcessor { +processPayment(amount) Result } Payment <|-- OnlinePayment PaymentProcessor <|-- CreditCardProcessor Payment o-- PaymentProcessor : 橋接
使用情境
- 支付系統:付款流程與付款處理器分離。
- 跨平台 UI:UI 抽象與平台實作分離。
- 設備驅動:設備抽象與驅動實作分離。
實作範例

class PaymentProcessor {
async processPayment(amount) {
throw new Error('processPayment must be implemented');
}
}
class CreditCardProcessor extends PaymentProcessor {
async processPayment(amount) {
await new Promise(resolve => setTimeout(resolve, 100));
console.log(`信用卡處理: $${amount}`);
return { success: true, method: 'credit_card', amount };
}
}
class Payment {
constructor(processor) {
this.processor = processor;
}
async process(amount) {
throw new Error('process must be implemented');
}
}
class OnlinePayment extends Payment {
async process(amount) {
const result = await this.processor.processPayment(amount);
return result;
}
}
const onlinePayment = new OnlinePayment(new CreditCardProcessor());
onlinePayment.process(100);優點
- 抽象/實作分離
- 擴充彈性高
缺點
- 結構較複雜