从王者荣耀看设计模式(二十三.访问者模式)

本文通过王者荣耀装备选择的场景,探讨了访问者模式在设计游戏元素访问策略中的运用。访问者模式允许低端和高端玩家根据自身需求定制操作,提高了代码的灵活性。模式涉及的角色和类图展示了如何将装备属性和详细描述分离,以利于复用和扩展。

从王者荣耀看设计模式

一.简介

在游戏中,根据场上状况给英雄配备合适的装备是赢的比赛的重要环节。对于刚开始玩王者荣耀(低端玩家like me),在选择装备的时候只会关注装备能给英雄带来多少伤害的增幅(装备属性),而大神级别玩家会仔细研究装备的详细描述

二.模式动机

在有些集合对象中可能存在多种不同类型的元素,而且不同的调用者在使用这些元素时也有所区别,这些调用者称为访问者。此时,可以使用访问者模式来进行系统设计。访问者模式为多个访问者访问集合对象中的多种元素提供了一种解决方案。在本实例中,集合中存储有装备"冰霜法杖"和"破魔刀"的属性和详细描述。低端玩家关注点(想要访问的对象)为集合中的属性。高端玩家关注点为集合中的详细描述。

三.访问者模式

访问者模式(Visitor Pattern):表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式是一种对象行为型模式

访问者模式的应用场景
在以下情况下可以使用访问者模式
■ 一个对象结构包含很多类型的对象,希望对这些对象实施一些依赖其具体类型的操作。在访问者中针对每一种具体的类型都提供了一个访问操作,不同类型的对象可以有不同的访问操作
■ 需要对一个对象结构中的对象进行很多不同的并且不相关的操作
■ 对象结构中对象相应的类很少改变,但经常需要在此对象结构上定义新的操作

访问者模式的通用类图

访问者模式涉及的角色
⑴.Vistor(抽象访问者)
抽象访问者为对象结构类中每一个具体元素类ConcreteElement声明了一个访问操作。从这些操作的名称或参数类型可以清楚知道需要访问的具体元素的类型,具体访问者需要实现这些操作方法,定义对这些元素的访问操作
⑵.ConcreteVisitor(具体访问类)
具体访问类实现了每个由抽象访问者声明的操作,每一个操作用于访问对象结构中一种类型的对象
⑶.Element(抽象元素)
抽象元素一般是抽象类或者接口,它定义了一个accept()方法,该方法以一个抽象访问类作为参数
⑷.ConcreteElement(具体元素)
具体元素实现了accept()方法,在其accpet()中调用访问者的访问方法以便完成对一个元素的操作
⑸.ObjectStructure(对象结构)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值