访问者模式

能够根据访问对象的身份或行为,给出不同的处理逻辑

package main


import "log"


// Visitor
// 访客模式,故名思意,能够明确知道访客的身份和行为
// 如示例中WeiBoVisitor 能够明确告知访问者的身份
// 能够根据访问对象的身份或行为,给出不同的处理逻辑

type IVisitor interface {
    Visit()
}

type WeiBoVisitor struct {
}

func (w WeiBoVisitor) Visit() {
    log.Println("Visit WeiBo")
}

type IqiyiVisitor struct {
}

func (i IqiyiVisitor) Visit() {
    log.Println("Visit IQIYI")
}

type IElement interface {
    Accept(visitor IVisitor)
}

type Element struct {
}

func (e Element) Accept(v IVisitor) {
    v.Visit()
}

func main() {
    e := &Element{}
    e.Accept(&WeiBoVisitor{})
    e.Accept(&IqiyiVisitor{})
}

已发布

分类

来自

标签:

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注