package main import "fmt" /* 实例 汤宝宝成为了一个电子画家,但是不同形状的笔刷和不同颜色颜料的组合让他犯了难... */ // 抽象类 type Paint interface { Use() string } type Brush interface { Draw() } // 具体实现类 type RedPaint struct{} func (r *RedPaint) Use() string { return "红色颜料" } type BluePaint struct{} func (b *BluePaint) Use() string { return "蓝色颜料" } type RoundBrush struct { paint Paint } func (r *RoundBrush) Draw() { fmt.Printf("使用圆形笔刷和%s进行绘图!\n", r.paint.Use()) } type SquareBrush struct { paint Paint } func (s *SquareBrush) Draw() { fmt.Printf("使用方形笔刷和%s进行绘图!\n", s.paint.Use()) } // 绘图函数 func Painting(brush Brush) { brush.Draw() } func main() { fmt.Println("============= 桥接模式 =============") redPaint := &RedPaint{} bluePaint := &BluePaint{} Painting(&RoundBrush{paint: redPaint}) Painting(&SquareBrush{paint: redPaint}) Painting(&RoundBrush{paint: bluePaint}) Painting(&SquareBrush{paint: bluePaint}) fmt.Println("\n=========== 桥接模式结束 ===========") }