策略模式——王者农药匹配机制用例解析

本文通过王者荣耀的匹配机制为例,深入解析策略模式的运用。通过将匹配规则抽象为独立类,实现了代码的解耦,提高了可读性和可维护性。策略模式在面对需求频繁变化时,能有效降低代码复杂度,简化逻辑错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说到策略模式,大家容易联想到战术、套路。商家在做销售的时候,针对不同的消费群体而制定不同的推销策略。对了策略模式而言,跟其他的设计模式一样。原本没有的路,人走多了,自然就有了套路。这里就策略模式的套路进行解析。

一个例子

要用什么例子来讲解,我想了很久。诸如一些计税规则几何计算规则等等。但是这些例子一个比较老旧,而且简单的体现不出模式好处,复杂的却也晦涩。我想找一个更加有趣贴近日常的例子。一款火爆了一年的手机游戏,王者荣耀,我想从他身上了挖掘一些例子来使用。大家或多或少都玩过农药。我得说明一点,我不是员工也不是枪手,因此下面讨论的用例仅仅是个推测和假设,可能对大家的段位提升没有太大的作用。哈哈。


只要玩过应该都知道这个游戏在一个5V五的对局里面,玩家等级差距通常不会很大。如果比赛玩家级别相差太大,分配不均衡,出现了比赛一边倒的情况,会大大的影响游戏的体验。因此,就有这么一个匹配机制,确保匹配在一起玩的玩家水平在一个合理的范围之内。(当然,实际的表现大家有目共睹)

流程图分析如下:




现在先来分析下这个匹配机制应该如何实现。假设我们知道他是怎么运作的。玩家跟系统没有多大关系,而贯穿这个用例的是玩家比赛中产生的数据,也就是局内表现数据,匹配机制会根据玩家的局内表现数据,来决定下一场匹配规则于是我们将他们抽象成如下关系。



根据上面的UML,我们先来简单的实践一下。当然,这里用的是java来实现。在实际游戏中高并发的环境中,很有可能是满足不了要求,特别是绝对数据的生成。不过匹配机制的操作是比赛结束的后期产生的。对并发也许要求并不是很高,因此案java的方式来实现也不是不可能。

实现例子的功能

我们先根据需求进行编写:

局内表现类

public class GameScore {
	private int playerID;//玩家id
	
	//众所周知的kda数据
	private int avgKill;
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值