我正在设计Traveler App。为此我需要设计'Traveler'类及其实例,我应该能够访问不同类型的Travel模式的属性。
class Traveller {
// common properties.
}
class RoadTravel {
// properties specific to class
}
class WaterTravel {
// properties specific to class
}
class RailTravel {
// properties specific to class
}
从上面的代码中,我只想创建'Traveler'类的实例,并且应该能够访问所有其他类的属性(RoadTravel,WaterTravel,RailTravel)。
我不想在我的子类上创建任何依赖,而且我的实例变量也不应该是最终的。
请建议好的实施方式,以便日后添加任何新类型的旅行模式都很容易。
答案 0 :(得分:1)
在Java中,你不能拥有一个从多个类扩展(继承)的类。 (你可能想看看致命的死亡钻石问题。
在您的情况下,您可以使用Travel
界面来定义每种旅行类型需要公开的行为,例如cost(int duration)
,getName()
。等/
然后,您的逻辑将使用Travel
接口来执行此逻辑。依赖于旅行类型的逻辑将存储在使用Travel
接口的单独类中。然后,您的主逻辑会将特定于行程的逻辑委派给在运行时传递给它的这些类。
您需要查看Strategy Design Pattern
,了解如何实施此功能。
答案 1 :(得分:0)
在java中实现多重继承的一种方法是使用代理。 您的要求似乎不太清楚,因此我无法建议完整的解决方案。
如果您提供将使用这些类的客户端代码示例,我可以更详细地建议如何使用代理实现它。