话不多说,直接上UML,这里没有具体的方法和参数,只记录下设计的思想,代码后续会上传:
第一步,建造者实现武将的初始化。这里WarriorTemplate就是初始的武将状态的模版,可写于配置文件进行扩展。标准的建造者模式,没啥难度~
第二步,状态模式实现敌我回合的切换,神奇的模式,后面要加第三种第四种状态的时候一个if else也不用写,太赞了~
第三步,武将本身也有状态,因为他可能在防御在中毒或者各种乱遭的状态,这里继续用状态模式,把AbstractWarrior看成是一个context来聚合各种状态,图再改:
OK 暂时先到这里,健身回来继续更新。现在已经可以假模假样的fight了,上一段控制台输出,现在,不同类型的武将,武将武器,状态,系统状态都是可拓展的了:
name: 赵云
hp: 155
attack: 110
defense: 90
weapon: 龙胆
weapon attack: 10
state: Normal State
name: 牛金
hp: 120
attack: 86
defense: 50
weapon: 枪
weapon attack: 6
state: Normal State
赵云 给予 牛金 121的表面伤害
实际造成了71点伤害
name: 牛金
hp: 49
attack: 86
defense: 50
weapon: 枪
weapon attack: 6
state: Normal State
牛金 给予 赵云 86的表面伤害
实际造成了0点伤害
name: 赵云
hp: 155
attack: 110
defense: 90
weapon: 龙胆
weapon attack: 10
state: Normal State
赵云 给予 牛金 121的表面伤害
实际造成了35点伤害
name: 牛金
hp: 14
attack: 86
defense: 50
weapon: 枪
weapon attack: 6
state: Defense State