動態變化的OO設計

今天看到個題目:對象會動態的變化。設計

遊戲精靈,有人和神仙,可是隨着人的不斷積分,會升級爲神仙;神仙也可能會由於積分的減小而降級爲人。這種狀況怎麼畫出個類圖來。對象

這是初版的設計,正常思惟。人和神仙都是遊戲精靈,從Is-A的角度來講是正確的。可是問題是,當人升級爲神仙的時候會出現:blog

var person=New 人();遊戲

//人升級im

person=new 神仙();d3

這個時候原來的人其實已經死掉了,這是不對的。第二版:img

把角色抽象出來,只有一種遊戲精靈,可是他的角色是不同的,升級或者降級之後只是角色的改變。升級

 

這種動態轉化的東西之前本身也沒有考慮過。仔細想一想其實就是OO的原則:把變化的東西拿出來作抽象。co

相關文章
相關標籤/搜索