【发布时间】:2021-10-26 20:44:30
【问题描述】:
我有一个名为 Orders 的对象。在这个对象中,我有两个参数 Vehicle 和 Customer。 现在我有一个名为 showOrder 的方法。此方法将打印车辆类型和客户姓名。
public void showOrder() {
System.out.println("-------------------------------------------------------|Order Placed|-------------------------------------------------------");
System.out.println("The order for the car type " + vehicle.getType() + " it was place on the name " + customer.getName() + " in date of " + date);
System.out.println("----------------------------------------------------------------------------------------------------------------------------");
}
假设将来,我将在对象 Order 中添加一个新的 Building 属性。现在如何更改此方法,以便将来添加新属性时,可以使用它来显示建筑物和车辆类型?它们都将实现 Rentable 接口。 我的想法是我想让这段代码尽可能通用和独立......
我希望我已经足够清楚了。 谢谢,
【问题讨论】:
-
您的
Rentable界面是什么样的?Orders班级的其余部分是什么样的? -
如果您有一些订单是车辆,而其他订单是建筑物,您可以使用多态性来定义一个超类 AbstractOrder 和两个子类 VehicleOrder 和 BuildingOrder。超类可以定义和调用抽象方法,例如 showOrder() 或 getDisplayName()。 OTOH,如果一个订单可以同时拥有车辆和建筑物,那么您只需要一个类。