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装饰器模式的主要内容,如果未能解决你的问题,请参考以下文章

[设计模式C++go]结构型模式:装饰器模式

[设计模式C++go]结构型模式:装饰器模式

[设计模式C++go]结构型模式:装饰器模式

学习Go语言之装饰器模式

go语言 装饰器模式

Go语言之装饰器