Open dushaoshuai opened 1 year ago
应用场景:多个类型要实现接口 I,而且他们有相似的逻辑。
I
实现:类型 T 实现接口 I 的全部或者部分方法,其他类型通过将 T 嵌入自己而获得 T 的字段和方法(委托),在 T 的基础上,根据自己的需求,添加新的字段和方法,也可以 override T 的字段和方法,从而实现接口 I。
T
net
在 command.go 中,其他 Cmder 的实现中嵌入了 baseCmd,如:
Cmder
baseCmd
type baseCmd struct { ctx context.Context args []interface{} err error keyPos int8 _readTimeout *time.Duration } type StatusCmd struct { baseCmd val string }
可以应用到设计模式 Template Method 中。
基本思想
应用场景:多个类型要实现接口
I
,而且他们有相似的逻辑。实现:类型
T
实现接口I
的全部或者部分方法,其他类型通过将T
嵌入自己而获得T
的字段和方法(委托),在T
的基础上,根据自己的需求,添加新的字段和方法,也可以 overrideT
的字段和方法,从而实现接口I
。应用
net
go-redis
在 command.go 中,其他
Cmder
的实现中嵌入了baseCmd
,如:Template Method
可以应用到设计模式 Template Method 中。
参见