我有一个称为“DataModel”的类,它基本上是一个数据单元,可以是字符串或数字,日期或具有各种(相同)属性的布尔值。

编写此模型的最佳方法是什么?

  • 值的类型为Object
    interface DataModel {
       Object getValue();  // cast to whatever is needed
       int getValueType(); // uses four constants
    }
    
  • 有四个不同的实现“StringModel”,“NumberModel”等,每个实现都有自己的类型化“getValue()”方法。这意味着,如果您有一个DataModel,则必须强制转换为正确的Model才能获得该值。
    interface DataModel {
       int getValueType();
    }
    interface NumberDataModel extends DataModel {
      Integer getValue();
    }
    ...
    
  • 有四种不同的方法,如果调用了错误的值类型,则每种方法都会引发异常:
    interface DataModel {
      String getStringValue();
      Integer getIntegerValue();
      ...
      int getValueType();
    }
    
  • 使用泛型。缺点是我理论上可以拥有任何类型的任何对象...另一方面,如果T不是允许的4种类型之一,则可以在构造函数中抛出IllegalStateException ...
    interface DataModel<T> {
      T getValue();
    }
    
  • 没关系。以上任何一项。 ;)
  • 最佳答案

    4似乎是最好的-即使您不想实现任何旧类型,从理论上也没有特殊的原因为什么您不应该允许它-它不会干扰您所做的任何其他事情。

    10-06 11:21