Go Bridge 橋接模式

2021-09-24 05:37:16 字數 1033 閱讀 4261

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...