1
0
Fork 0
design-patterns/go/bridge/main.go

66 lines
1.1 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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=========== 桥接模式结束 ===========")
}