visitor

package
v0.0.0-...-e059a18 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 25, 2023 License: MIT Imports: 1 Imported by: 0

README

访问者模式

访问者模式,常常1对N的情况处理,用于将数据结构和操作进行分离,访问者模式侧重Visitor一侧而不是被访问的一侧,可以方便的增加很多访问者,而是不是增加更多的访问对象.

访问者模式的目的是为了解耦对象和对象的使用和处理逻辑,一边提供资源,一边使用,也可以说是解耦生产出来的产品和产品消费者,同样用于分离操作的还有策略模式(strategy pattern),但两者存在侧重点不同.

一个石油的例子,油田提供石油,不同的客户将石油用到不同的地方,可能用于生产武器,可能用于提纯材料,生产服装,也可能只是用于只是用于提供动力,这些客户就是石油的不同visitor.

客户买石油的时候,都要遵循油田的购买方式,否则,就不卖给你,这个特定的购买方式就是指Visitor模式中常说的Accept方法。

打游戏是个不错的例子。

玩家角色需要跟NPC,其他玩家,以及游戏环境,交换这些都是Visit的过程.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Attacker

type Attacker struct {
	// contains filtered or unexported fields
}

Attacker 攻击者

func (Attacker) VisitNPC

func (a Attacker) VisitNPC(n NPC)

VisitNPC 攻击NPC

func (Attacker) VisitPlayer

func (a Attacker) VisitPlayer(p Player)

VisitPlayer 攻击其他玩家

func (Attacker) VisitSystemEnv

func (a Attacker) VisitSystemEnv(s SystemEnv)

VisitSystemEnv 攻击环境,如石头,大门,墙壁

type IDieselVisitor

type IDieselVisitor interface {
	Visit(diesel)
}

IDieselVisitor 访问者接口

type IGameObject

type IGameObject interface {
	Accept(IGameVisitor)
}

IGameObject 游戏上下文对象

type IGameVisitor

type IGameVisitor interface {
	VisitPlayer(Player)
	VisitNPC(NPC)
	VisitSystemEnv(SystemEnv)
}

IGameVisitor 游戏提供的环境访问能力

type IGasResource

type IGasResource interface {
	Accept(IGasVisitor)
}

IGasResource 作为资源提供接口

type IGasVisitor

type IGasVisitor interface {
	Visit(gas)
}

IGasVisitor 访问者接口

type NPC

type NPC struct {
	Name       string
	IsImmortal bool //是否可以被打死
}

NPC 被方法对象

func (NPC) Accept

func (n NPC) Accept(v IGameVisitor)

Accept 接受聚能NPC访问能力的对象的访问

type Player

type Player struct {
	Name  string
	Level int
}

Player 代表其他玩家,因为用户角色需要和其他玩家交互

func (Player) Accept

func (p Player) Accept(v IGameVisitor)

Accept 提供交互接口

type SettingVisitor

type SettingVisitor struct{}

SettingVisitor 只提供Setting的能力

func (SettingVisitor) VisitNPC

func (SettingVisitor) VisitNPC(n NPC)

VisitNPC 提供NPC的信息

func (SettingVisitor) VisitPlayer

func (SettingVisitor) VisitPlayer(p Player)

VisitPlayer 提供交互的第三方对象的信息

func (SettingVisitor) VisitSystemEnv

func (SettingVisitor) VisitSystemEnv(s SystemEnv)

VisitSystemEnv 提供游戏环境信息

type SystemEnv

type SystemEnv struct {
	Mark    string //环境标识
	Version string //环境版本
}

SystemEnv 环境对象

func (SystemEnv) Accept

func (s SystemEnv) Accept(v IGameVisitor)

Accept 提供对环境的访问

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL