```go package bridage import "fmt" type Draw interface { DrawCircle(radius, x, y int) } type RedCircle struct { } func (r *RedCircle) DrawCircle(radius, x, y int) { fmt.Printf("Red :: radius=%d, x=%d, y=%d\n", radius, x, y) } type YellowCircle struct { } func (r *YellowCircle) DrawCircle(radius, x, y int) { fmt.Printf("Yellow :: radius=%d, x=%d, y=%d\n", radius, x, y) } type Shape struct { draw Draw } func (s *Shape) Shape(d Draw) { s.draw = d } type Circle struct { shape Shape x int y int radius int } func (c *Circle) Constructor(radius, x, y int, draw Draw) { c.radius = radius c.x = x c.y = y c.shape.Shape(draw) } func (c *Circle) Draw() { c.shape.draw.DrawCircle(c.radius, c.x, c.y) } ``` * 桥接模式 * 定义接口并且实现接口,并定义统一结构体,其中一个属性是接口 * 调用时,将需要调用对象作为参数传递进行,实现具体对象调用