美文网首页
Golang 设计模式之-装饰模式

Golang 设计模式之-装饰模式

作者: trump2018 | 来源:发表于2020-05-06 23:17 被阅读0次

Golang 设计模式之-装饰模式

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

装饰模式

  • 装饰模式是一个非常常用的设计模式。常用到python内置了它。

  • 装饰模式是为已有功能动态的添加更多功能的一种方式, 降低了主类(当然,go里没有类这种东西,可以用结构模拟)复杂度, 防止类的爆炸行为.

  • 当新加的功能仅仅是满足某种特定条件下的需要时,装饰模式是个非常好的选择。

  • 装饰模式把核心功能和装饰功能区分了,减少了核心功能可能造成的冗余和耦合,简化核心类的重复装饰逻辑.

  • 装饰模式的装饰顺序很重要,它决定了最终类被装饰的效果

实例

  • Decorate 抽象
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()
    }
}
  • implement of Decorate
    具体decorate 实现
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()
}
  • call it
func main() {
    a := new(DecorateA)
    b := new(DecorateB)
    b.Base.DecorateFun(a)
    b.Do()
} 

相关文章

网友评论

      本文标题:Golang 设计模式之-装饰模式

      本文链接:https://www.haomeiwen.com/subject/nqdnghtx.html