假设我们有一个类Car
,其中MAIN字段称为VIN
(车辆识别号)。 VIN为我们提供了很多信息:
我可以继续并添加更多信息:
在Car
对象中存储一些信息(例如生产年份和引擎类型)似乎是合理的。但是,将所有这些信息存储在Car
对象中会使其过于复杂,“过载”并且难以管理。此外,随着应用程序的发展,我可以添加越来越多的信息。
边境在哪里?应该在Car
对象中存储什么以及应该存储在Dictionary<Car, GPSCoordinates>
我认为可能我应该在Car
对象中存储“静态”数据,以便将其设为immutable
。并将“动态”数据存储在特殊存储中。
答案 0 :(得分:0)
仅仅因为您的Car
班级提供属性 GPSCoordinates
并不意味着您需要在内部保留这些坐标。从本质上讲,这就是封装的全部内容。
是的,您可以添加“IsInGarageNow”,“WasEverDrivedByMadonna”或“RecommendedOil”等属性。
答案 1 :(得分:0)
我会使用一个名为CarModel
的类来表示应用程序中每个可能的汽车共享的基本属性(引擎大小,颜色,注册号等)。然后,您可以使用任何数量的更具体的子类(如Car,RentalCar或任何适合您业务逻辑的子类)扩展此类。
通过这种方式,您可以清楚地定义所有汽车共享的内容以及不同州汽车的其他定义(例如,RentalCar及其独特参数)。
<强>更新强>
我猜你正在寻找的东西是这样的(虽然我建议反对它):
public class Car
{
// mandatory
protected int engineSize;
protected int color;
// optional
protected Map<String, Object> attributes = new HashMap<String, Object>();
public void set(String name, Object value)
{
attributes.put(name, value);
}
public Object get(String name)
{
return attributes.get(name);
}
}
为什么这不是一个好的解决方案:
Car
类变成不属于它的东西。