package main
import "fmt"
// bridge模式 屬於單一職責,主要解決在繼承的情況下,子類急劇膨脹,難以維護。
// 而bridge模式,改繼承為組合
// 在現實生活中,某些類具有兩個或多個維度的變化,如圖形既可按形狀分,又可按顏色分。
// 如何設計類似於 photoshop 這樣的軟體,能畫不同形狀和不同顏色的圖形呢?
// 如果用繼承方式,m 種形狀和 n 種顏色的圖形就有 m×n 種,不但對應的子類很多,
// 而且擴充套件困難。
// 包是是乙個抽象化的角色
type bag inte***ce
type bridgebag struct
// 擴充套件抽象化角色 手包
type handbag struct
func (h *handbag) getname()
// 擴充套件抽象化角色 錢包
type wallet struct
func (w wallet) getname()
type color inte***ce
// 具體實現的角色
type blue struct
func (b *blue) getcolor()
type red struct
func (r *red) getcolor()
func main()
// 藍色
b := blue
// 紅色的手包
h := handbag
h.color = &r
h.getname()
// 藍色手包
h.color = &b
h.getname()
w := wallet
// 紅色錢包
w.color = &r
w.getname()
// 藍色錢包
w.color = &b
w.getname()
}
橋接模式(Bridge)
個人理解 橋接模式的精髓在於維護乙個抽象物件,並抽取這個物件的抽象部分。uml類圖 實現 public inte ce icomponent public class componenta icomponent public class componentb icomponent public ab...
bridge pattern 橋接模式
bridge模式又稱為handle body模式。在軟體系統中,經常面臨著 某些結構複雜的物件 的建立工作,由於需求的變化,這些物件經常面臨著劇烈的變化,但是他們卻擁有比較穩定一致的介面。大部分建立型模式,就是為了解決如何向 客戶程式 隔離出 這些易變物件 從而使得 依賴這些易變物件的客戶程式 不隨...
php 橋接模式
交接模式之模擬毛筆 1 實現類介面 inte ce color 2 具體實現顏色類 class red implements color class green implements color class blue implements color class white implements c...