[英]How to design class hierarchy?
我正在用Java 7
編程,現在需要為所有具體條件創建基類BaseCondition
。 我的意思是,我有一些類型: Date
, Integer
和一些enum
並且我需要存儲諸如_ALL_INTEGERS > 100 and < 200
, _ALL_INTEGERS > 100
, _ALL_INTEGERS < 200
,對於日期(更多,更少, )。 對於enum
我現在只選擇一個值,所以如果
enum BonusType{
BIRTHDAY,
REGISTRATION
}
那么條件將類似於BonusType= BIRTHDAY
和BonusType= 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.