golang设计模式之装饰器模式
2019-11-30 15:21:30 Author: cloudsjhan.github.io(查看原文) 阅读量:8 收藏

发表于 | 分类于 | 阅读次数: |

| 字数统计: 215 | 阅读时长 ≈ 1

golang设计模式之装饰器模式

装饰器

装饰器结构模式允许动态地扩展现有对象的功能,而不改变其内部结构。

装饰器提供了一种灵活的方法来扩展对象的功能。

golang 实现

下面的LogDecorate用signature func(int)int修饰函数,该函数操作整数并添加输入/输出日志记录功能。

1
2
3
4
5
6
7
8
9
10
11
12
13
type Object func(int) int

func LogDecorate(fn Object) Object {
return func(n int) int {
log.Println("Starting the execution with the integer", n)

result := fn(n)

log.Println("Execution is completed with the result", result)

return result
}
}

如何使用

1
2
3
4
5
6
7
func Double(n int) int {
return n*2
}
f := LogDecorate(Double)
f(5)
//参数为5,开始执行
//执行的结果是10

经验

  • 与适配器模式不同,要修饰的对象是通过注入获得的。

  • 装饰器不应更改对象的接口。


-------------The End-------------

cloud sjhan wechat

subscribe to my blog by scanning my public wechat account


文章来源: https://cloudsjhan.github.io/2019/11/30/golang%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%E4%B9%8B%E8%A3%85%E9%A5%B0%E5%99%A8%E6%A8%A1%E5%BC%8F/
如有侵权请联系:admin#unsafe.sh