2013-02-05 28 views
4

我的問題在於繼承可播放角色的屬性。我有一個名爲Being的抽象類,它指出所有的繼承類都需要包含力量,敏捷等屬性。玩家需要選擇一個種族,例如,獸人將力量從0提升到10,然後玩家需要選擇一個類,比如蠻力,這樣可以爲英雄的力量增加7點。據我看,它會繼續我的英雄類繼承2抽象類?這是我的獸人類的摘錄:如何解決在我的遊戲中繼承2個抽象類的問題?

public abstract class Orc:Being 
{ 
    private int _strength = 10; 



    //Another question, is it okay to declare an abstract property in my base abstract 
    //class to force the inheriting class Orc to override the property? I wanted to 
    //find a way to force subclasses to have strength attributes 

    public override int Strength 
    { 
      get {return _strength;} 
      set {_strength = value;} 
    } 
} 
+0

裝飾模式http://www.dofactory.com/Patterns/PatternDecorator.aspx#_self2 – daryal

回答

3

如果你的抽象類只有抽象屬性,你可以把它變成一個接口。這迫使實現類提供一個實現,並且你可以實現儘可能多的接口。

否則,我會看看decorator patternstrategy pattern。兩者都使用組合作爲繼承的替代品。

+0

+1。這是接口的全部要點。 –

3

component pattern可能是你在找什麼。

你可以讓生命包含一個種族成分和一個類別成分(即場地),並使得力量場得分者返回一個種族的力量加值+該類力量加值的總和。