簡體   English   中英

如何設計班級層次結構?

[英]How to design class hierarchy?

我正在用Java 7編程,現在需要為所有具體條件創建基類BaseCondition 我的意思是,我有一些類型: DateInteger和一些enum並且我需要存儲諸如_ALL_INTEGERS > 100 and < 200_ALL_INTEGERS > 100_ALL_INTEGERS < 200 ,對於日期(更多,更少, )。 對於enum我現在只選擇一個值,所以如果

enum BonusType{
    BIRTHDAY,
    REGISTRATION
}

那么條件將類似於BonusType= BIRTHDAYBonusType= REGISTRATION

所以我想寫的是

public class <T> ConditionBase{
    private T low;
    private T high;
    //GET, SET
}

當我需要為枚舉創建條件時,使用low=high 所有條件都將是派生類,如下所示:

public class DateCondition extends BaseCondition<Date>{ }
public class BonusTypeCondition extends BaseCondition<BonusType>{ }

具體條件示例:

BaseCondition c = new BonusTypeCondition();
c.setLow(BonusType.BIRTHDAY);
c.setHigh(BonusType.BIRTHDAY);

問題 :我不確定在嘗試擴展某些功能(添加更復雜的條件)時是否不會遇到麻煩。 您不能提出一些更具擴展性的建議嗎?

嗯,您的概念非常接近在每種情況下都存儲Java 8 Lambda / closure。 如果您不能切換版本,則必須抽象一個事實,即枚舉值low或“高”可能不合理。 因此,您的條件的真實基礎應該是這樣的:

public interface ConditionBase<T>
{
   boolean fulfills(T object);  // True if this object fullfills the condition.
}

那是唯一的一般情況。 然后,您可以為具有上限的類創建一些實現。

public class<T extends Comparable> LessThanX() implements ConditionBase<T>
{
   ...
   private T value;

   ...
   public boolean fullfills(T object)
   {
      return object.compareTo(value) < 0;
   }
}

原諒我,如果那里有語法錯誤,自從我搬到Scala以來,我的Java一直很生銹。

您可以根據需要定義任意數量的條件類型,以及一個或多個內部值(中間值之間)。 您還可以創建一些包含多個條件的包裝器,並對照所有條件檢查對象,等等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM