gpt4 book ai didi

java - 如何设计类层次结构?

转载 作者:行者123 更新时间:2023-12-02 04:47:50 25 4
gpt4 key购买 nike

我正在 Java 7 中编程现在我需要创建一个基类 BaseCondition对于所有具体条件。我的意思是我有一些类型:Date , Integer ,还有一些enum s,我需要存储像 _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/闭包。如果您无法切换版本,则必须抽象出这样一个事实:low 或“high”对于 Enum 可能不合理。所以你真正的条件基础应该是这样的:

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 已经生锈了。

您可以根据需要定义任意多种类型的条件,并使用一个或多个内部值(在实例之间)。您还可以创建一些内部包含多个条件的包装器,并根据所有条件检查对象,等等。

关于java - 如何设计类层次结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29522901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com