首页 > 解决方案 > 将变量的数据传递给另一个类

问题描述

编辑进一步澄清。

我正在尝试为我的简单订购 Web 应用程序构建一个简单的 api 来处理我的简单 MySQL 数据库上的 CRUD 操作。然后将在 Angular 上使用该 api。

基本上,订购系统的条件是选定的订单有 5% 的折扣,所以这将是 DiscountedBill 的工作来计算它会是多少。其他项目没有折扣,因此将由RegularBill工作来计算。

正如我在此图中所理解的那样,如果用户在我的系统上有 DiscountedBill 和 RegularBill 订单,OrderBill 类将必须计算所有订单的总数。

图表

那可能吗?

这是主要的 OrderBill 类。

public class OrderBill {

    private List<Order> orderList;
    private CafeClerk clerk;

    public OrderBill(CafeClerk clerk) {
        this.clerk = clerk;
    }

    public List<Order> getOrderList() {
        return orderList;
    }

    public void setOrderList(List<Order> orderList) {
        this.orderList = orderList;
    }

    public CafeClerk getClerk() {
        return clerk;
    }

    public void setClerk(CafeClerk clerk) {
        this.clerk = clerk;
    }

    public double getTotalBill() {
        // function here to add the computed data of both DiscountedBill + RegularBill
        return 0;
    }
}

RegularBill 类 –</p>

public class RegularBill extends OrderBill {

    public RegularBill(CafeClerk clerk) {
        super(clerk);
    }

    double totalRegBill = 0.0;

    @Override
    public double getTotalBill() {
        for (Order order : super.getOrderList()) {
            totalRegBill += (order.getPrice());
        }
        return totalRegBill;
    }

    public double getTotalRegBill() {
        return totalRegBill;
    }

    public void setTotalRegBill(double totalRegBill) {
        this.totalRegBill = totalRegBill;
    }
}

DiscountedBill 类 –</p>

public class DiscountedBill extends OrderBill {

    public DiscountedBill(CafeClerk clerk) {
        super(clerk);
    }

    final double DISCOUNT = 0.05;
    double totalDiscBill = 0.0;

    @Override
    public double getTotalBill() {
        for (Order order :super.getOrderList()) {
            totalDiscBill += (order.getPrice() - DISCOUNT);
         }
        return totalDiscBill;
    }

    public double getTotalDiscBill() {
        return totalDiscBill;
    }

    public void setTotalDiscBill(double totalDiscBill) {
        this.totalDiscBill = totalDiscBill;
    }
}

标签: javaarrays

解决方案


我不确定我是否正确理解了目的,但是如果您想总结DiscountedBilland RegularBillin OrderBill,您不是更需要这样的结构吗?

public class OrderBill {

    private List<Order> orderList;
    private CafeClerk clerk;
    private RegularBill regularBill;
    private DiscountedBill discountedBill;

    public OrderBill(CafeClerk clerk) {
        this.clerk = clerk;
    }

    public List<Order> getOrderList() {
        return orderList;
    }

    public void setOrderList(List<Order> orderList) {
        this.orderList = orderList;
    }

    public CafeClerk getClerk() {
        return clerk;
    }

    public void setClerk(CafeClerk clerk) {
        this.clerk = clerk;
    }

    public double getTotalBill() {
        return regularBill.getTotalBill(orderList) + discountedBill.getTotalBill(orderList);
    }
}
public class RegularBill {

    public RegularBill() {}

    double totalRegBill = 0.0;

    public double getTotalBill(List<Order> orders) {
        for (Order order : orders) {
            totalRegBill += (order.getPrice());
        }
        return totalRegBill;
    }

    public double getTotalRegBill() {
        return totalRegBill;
    }

    public void setTotalRegBill(double totalRegBill) {
        this.totalRegBill = totalRegBill;
    }
}
public class DiscountedBill {

    public DiscountedBill() { }

    final double DISCOUNT = 0.05;
    double totalDiscBill = 0.0;

    public double getTotalBill(List<Order> orders) {
        for (Order order : orders) {
            totalDiscBill += (order.getPrice() - DISCOUNT);
        }
        return totalDiscBill;
    }

    public double getTotalDiscBill() {
        return totalDiscBill;
    }

    public void setTotalDiscBill(double totalDiscBill) {
        this.totalDiscBill = totalDiscBill;
    }
}

当然,增强这个解决方案是必要的。但这可能已经是一个暗示。然后,您可以使用 getTotalBill() 方法实现接口。


推荐阅读