0

我很困惑。
我创建了一个抽象类“Person”,然后从 Person 扩展类“Part-Time Employee”。然后我从 Person 扩展了一个名为“全职员工”的抽象类。
然后我创建了两个新类,称为“新全职员工”和“终身全职员工”,它们都从全职员工扩展而来。

我想跟踪 ArrayList 中的所有员工......这就是我在概念上陷入困境的地方。我创建了一个从 ArrayList 扩展的名为 Database 的类。

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

就像我想显示整个列表一样,它如何知道要使用哪个显示功能?是tenuredFullTimeEmployee 还是NewFullTimeEmployee?

谢谢!!

4

1 回答 1

0

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

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

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

要回答你的第二个问题,你是对的......而不是扩展 ArrayList,你应该有类似的东西

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

然后使用上面建议的两种模式之一,您可以处理不同的行为。

于 2012-07-27T17:43:23.790 回答