0

比如说,我们有一个超类Car和两个子类Ford,并且Porsche. 现在图形用户界面应该显示正确的表示(例如汽车的名称)。getCarName()我们可以为每个子类添加一个额外的方法。

但是现在,我们有另一个 GUI 想要通过其他属性来表示汽车,例如汽车名称加上生产国。然后我们必须添加另一个方法,依此类推。

一般来说,我想以一种很好的方式存储某种配置/属性。每次需要另一个表示时,不应更改原始数据结构(可能有很多子类)。所以我想创建一个 HashMap 将子类与其属性相关联,并将这个 HashMap 交给 GUI。

但是应该使用什么样的钥匙呢?HashMap<Car, String>没有解决方案,因为我不想创建汽车对象只是为了存储表示。String 表示独立于实例。

也欢迎设计模式。

4

2 回答 2

1

您可以将任何汽车的所有属性/属性存储在 POJO(例如:CarPropertyPOJO)中,然后使用此 POJO 显示您需要的任何属性。这可以在您的不同页面上统一使用。根据您的问题CarPropertyPOJO将包含 2 个成员变量carNameproductionCountry。如果您只想显示单个汽车的属性,那么只需将CarPropertyPOJO对象传递给 UI 即可解决问题。假设您想以表格形式显示许多汽车的属性,那么您可以传递一个 Collection 对象(ArrayList< CarPropertyPOJO > 或 HashMap)。CarSubClassName 可以只表示汽车的子类。

于 2012-12-30T15:10:43.900 回答
0

为了有一个干净的设计,我宁愿getProductionCountriesCar类中有一个方法,并且可以被每个子类覆盖。当您添加一辆新车时,您确实需要编写更多代码,但这是不可避免的。

于 2012-12-30T14:36:49.757 回答