GO设计模式10装饰器模式
Posted XY丶YX
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GO设计模式10装饰器模式相关的知识,希望对你有一定的参考价值。
package main
import (
"fmt"
)
//抽象构件
type IDecorate interface {
Do()
}
//抽象装饰
type Decorate struct {
decorate IDecorate
}
func (d *Decorate) DecorateFun(i IDecorate) {
d.decorate = i
}
func (d *Decorate) Do() {
if d.decorate != nil {
d.decorate.Do()
}
}
//具体装饰A
type DecorateA struct {
Base Decorate
}
//重写方法,隐式实现接口
func (d *DecorateA) Do() {
fmt.Println("执行A装饰")
d.Base.Do()
}
//具体装饰B
type DecorateB struct {
Base Decorate
}
//重写方法,隐式实现接口
func (d *DecorateB) Do() {
fmt.Println("执行B装饰")
d.Base.Do()
}
//具体装饰C
type DecorateC struct {
Base Decorate
}
//重写方法,隐式实现接口
func (d *DecorateC) Do() {
fmt.Println("执行C装饰")
d.Base.Do()
}
func main() {
fmt.Println("hello")
a := new(DecorateA)
b := new(DecorateB)
c := new(DecorateC)
b.Base.DecorateFun(a)
c.Base.DecorateFun(b)
c.Do()
}
以上是关于GO设计模式10装饰器模式的主要内容,如果未能解决你的问题,请参考以下文章