2012-07-27 128 views
0

我很困惑。
我已经创建了一个抽象类'Person',然后我从Person扩展了'Part-Time Employee'类。 然后我从Person中抽象出一个名为'Full-Time Employee'的类。
然后,我创建了两个名为“全职员工”和“终身全职员工”的新类,这两个类都从全职员工延伸。java创建一个从不同类继承的对象的ArrayList

我想跟踪一个ArrayList中的所有雇员......这就是我在概念上被卡住的地方。我创建了一个名为Database的类,它从ArrayList扩展而来。

如何确保数组可以容纳我需要的所有3个类?我是否创建了抽象类类型的数组?这让我觉得我无法访问我在继承的类中定义的方法......我也读过从ArrayList扩展它不是好习惯......所以创建一个数据库类与ArrayList?这仍然允许我访问我定义的所有内容吗?

如果我想要显示整个列表,它将如何知道使用哪个显示函数? tenuredFullTimeEmployee或NewFullTimeEmployee的?

谢谢!

回答

0

你确实有一些选择。如果这些类仅在行为上有所不同,那么您可以使用策略模式。如果您确实需要在List对象中保留不同类型的对象,然后根据该类型执行不同的操作,则可以使用访问者模式。我的猜测是,你应该抛弃一些继承,并采取类似于战略的东西来抽象出不同于类的行为。

http://www.oodesign.com/strategy-pattern.html

http://www.oodesign.com/visitor-pattern.html

要回答你的第二个问题,你是对的...而不是延长ArrayList中,你应该有类似

List<Person> people = new ArrayList<Person>(); 

然后使用两个中的一个建议上面的模式,你可以处理不同的行为。

相关问题