我正在编写一个 java 程序来验证属性映射中的键和值,可以将其视为 JSON 对象。现在我正在使用深度嵌套的 if-else 来验证它,但它很容易出错。不确定这是否可以在任何设计模式中轻松解决。
以玩家属性图为例:
'player' = {'name': 'player1',
'age': 18,
'race': 'human',
'skills': 'pick pocket',
'misc': { 'hoppy': 'sleep', 'exp': 238459 }
};
我想验证几件事
一些键值对是强制性的:like
name
在player
属性映射中是强制性的,misc
不是。某些值需要是特定类型,例如值
age
需要是整数。一些值是枚举,比如
race
可能是human
,elf
,drawf
但仅此而已。某些键依赖于其他键,如果
A
指定了键,则B
还需要指定键。就像 ifcountry
取决于'race': 'human'
,所以{'race': 'human', 'country': 'midearth'}
是有效的。{'race': 'human', 'enemy': 'ghost'}
,{'race': 'human'}
不是。值也可以是映射,该映射中的值不需要是相同的类型。
此属性映射将在未来扩展。什么样的设计会让它更具扩展性?