我想真正得到一个好主意如何在OOP术语中思考,所以我有一个半假想的场景在我的脑海中,我正在寻找有些想法。模拟大量与其他对象相关的对象(“有”)
如果我想为不同类型的人进行互动模拟,他们每个人都可以在不同的“技能”中获得不同的熟练水平,那么最佳的方法是什么?
这真的是“技能”的东西,我有点着迷。我的要求如下:
- 每个人无论是“拥有”一个技能或不
- 如果人有一技之长,他们也有与技能
-I需要一种方法来查找和相关的“熟练程度”挑选出每个具有一定技能或者某种水平的人 - 设计需要可扩展(即,我需要能够在后面添加更多“技能”)
我考虑了以下选项:
对于我所包含的每一项技能都有一个巨大的枚举, e人类包含一个 “int技能[TOTAL_NUM_SKILLS]”成员。该阵列将具有“未获得技能”的零,以及1到(最大)熟练水平的“获得技能”。
具有相同的巨人枚举,并有专人类包含地图与技能相关的技能(从ENUM)和数字,这样你可以只添加所获得的技能,地图等一批关联这办法。
创建的每一个技能的具体类,并让每个从一个抽象基类继承(ISkill,说的),并有专人类有地图ISkill的
真的,选项1看起来像是直截了当的没有废话的做法。请批评;有没有理由不接受?有更多的面向对象的方式来做到这一点吗?
我知道选项3现在没有什么意义,但是如果我决定稍后再延长这一点,让技能不仅仅是与他们相关的熟练程度的东西(即,实际上将新动作与技能相关联( ISkill :: DoAction等),这是否有意义作为一个选项?
对于广泛的问题,我只想看看这种思路是否有意义,或者如果我吠叫完全错误的树
请停止标记标题和签名帖 – 2012-02-24 16:46:45