动态变化的OO设计

今天看到个题目:对象会动态的变化。

游戏精灵,有人和神仙,但是随着人的不断积分,会升级为神仙;神仙也可能会因为积分的减少而降级为人。这种情况怎么画出个类图来。

动态变化的OO设计

这是第一版的设计,正常思维。人和神仙都是游戏精灵,从Is-A的角度来说是正确的。但是问题是,当人升级为神仙的时候会出现:

var person=New 人();

//人升级

person=new 神仙();

这个时候原来的人其实已经死掉了,这是不对的。第二版:

动态变化的OO设计

把角色抽象出来,只有一种游戏精灵,但是他的角色是不一样的,升级或者降级以后只是角色的改变。

 

这种动态转化的东西以前自己也没有考虑过。仔细想想其实就是OO的原则:把变化的东西拿出来做抽象。

 

你可能感兴趣的:(OO)