-
2.4 装饰器模式
-
代码实现
下面是一个简单的画画的例子,默认的 Square 只有基础的画画功能, ColorSquare 为他加上了颜色
package decorator // IDraw IDraw type IDraw interface { Draw() string } // Square 正方形 type Square struct {} // Draw Draw func(s Square) Draw() string { return "this is a square" } // ColorSquare 有颜色的正方形 type ColorSquare struct { square IDraw color string } // NewColorSquare NewColorSquare func NewColorSquare(square IDraw, color string) ColorSquare { return ColorSquare { color: color, square: square } } // Draw Draw func(c ColorSquare) Draw() string { return c.square.Draw() + ", color is " + c.color }
单元测试
func TestColorSquare_Draw(t * testing.T) { sq: = Square {} csq: = NewColorSquare(sq, "red") got: = csq.Draw() assert.Equal(t, "this is a square, color is red", got) }
- 留下你的读书笔记
- 你还没登录,点击这里
-
用户笔记留言