实现桥接模式和组合模式示例,添加相关类和方法,增强代码可读性
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
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=========== 桥接模式结束 ===========")
|
||||
}
|
||||
Reference in New Issue
Block a user