[英]Passing data of a variable to another class
编辑进一步澄清。
我正在尝试构建一个简单的 api 来处理我的简单 MySQL 数据库上的 CRUD 操作,用于我的简单订购 Web 应用程序。 然后将在 Angular 上使用 api。
基本上,订购系统的条件是选定的订单有 5% 的折扣,所以这将是 DiscountedBill 的工作来计算它会是多少。 其他项目没有折扣,因此将由RegularBill工作来计算。
正如我在此图上所理解的那样,如果用户在我的系统上有 DiscountedBill 和 RegularBill 订单,OrderBill class 将必须计算所有订单的总数。
那可能吗?
这是主要的 OrderBill class。
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;
}
}
常规比尔 class –
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 class –
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;
}
}
我不确定我是否正确理解了目的,但是如果您想总结OrderBill
中的DiscountedBill
和RegularBill
,您不是更需要这样的结构吗?
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() 方法实现接口。
如果我理解正确,你可以这样做:
public DiscountedBill(RegularBill bill) {
this.setOrderList(bill.getOrderList);
this.setClerk(bill.getClerk());
}
@Override
public double getTotalBill() {
for (Order order :this.getOrderList()) {
totalDiscBill += (order.getPrice() - DISCOUNT);
}
return totalDiscBill;
}
注意:如果我猜对了,你只是减去 0.05,而不是 %,应该是:
@Override
public double getTotalBill() {
for (Order order :this.getOrderList()) {
totalDiscBill += (order.getPrice() - (order.getPrice() * DISCOUNT));
}
return totalDiscBill;
}
但这只是一个猜测,我认为你试图归档什么。
如果您需要重新创建此图,那么我的提示是您将OrderBill
抽象化,并且getTotalBill()
仅对RegularBill
和DiscountedBill
感兴趣。
您不能用给定的结构在OrderBill
中真正将这两个类相加。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.