假设我们有一个超类Car
和两个子类Ford
和Porsche
。现在,图形用户界面应该显示适当的表示(例如,汽车的名称)。我们可以为每个子类添加一个额外的方法getCarName()
。
但是现在,我们有另一个GUI,它想用一些其他属性来表示汽车,例如汽车名称加上生产国家。然后我们必须添加另一个方法,依此类推。
一般来说,我想以一种好的方式存储一些配置/属性。原始数据结构(可能有很多子类)不应该在每次需要另一种表示时更改。所以我想创建一个HashMap,它将子类与其属性关联起来,并将这个HashMap交给GUI。
但是应该使用什么样的密钥呢?HashMap<Car, String>
不是解决方案,因为我不想仅仅为了存储表示而创建汽车对象。String的表示形式与实例无关。
也欢迎设计模式。
您可以在POJO中存储任何汽车的所有属性/属性(例如:CarPropertyPOJO),然后使用此POJO来显示您需要的任何属性。这可以在不同的页面上统一使用。根据您的问题CarPropertyPOJO将包含2个成员变量carName和productionCountry。在一种情况下,你只是想显示单个汽车的属性,然后只需传递一个CarPropertyPOJO对象到UI将解决这个问题。假设你想在表格形式中显示许多汽车的属性那么你可以传递a集合对象(ArrayList<<em>CarPropertyPOJO>或HashMap)。
为了有一个干净的设计,我宁愿在Car
类中有一个像getProductionCountries
这样的方法,并且可以被每个子类覆盖。当您添加一辆新车时,确实需要编写更多的代码,但这是不可避免的。