66 lines
1.1 KiB
Go
66 lines
1.1 KiB
Go
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=========== 桥接模式结束 ===========")
|
||
}
|