Golang 设计模式之-装饰模式

2020-05-06  本文已影响0人  trump2018

Golang 设计模式之-装饰模式

最近在温习设计模式,虽然面向对象不是go的特长,但用go实现的设计模式,比java 和 c# 这种纯面向对象语言多了一份灵活,比python 这种虚假的面向对象要更直观, 性能上也更有优势.

装饰模式

实例

type IDecorate interface {
    Do()
}

type Decorate struct {
    decorate IDecorate
}

func (c *Decorate) DecorateFun(i IDecorate) {
    c.decorate = i
}

func (c *Decorate) Do() {
    if c.decorate != nil {
        c.decorate.Do()
    }
}
type DecorateA struct {
    Base Decorate
}

func (c *DecorateA) Do() {
    fmt.Printf("run A decorate")
    c.Base.Do()
}

type DecorateB struct {
    Base Decorate
}

func (c *DecorateB) Do() {
    fmt.Printf("run B decorate")
    c.Base.Do()
}
func main() {
    a := new(DecorateA)
    b := new(DecorateB)
    b.Base.DecorateFun(a)
    b.Do()
} 
上一篇 下一篇

猜你喜欢

热点阅读