java - 将变量的数据传递给另一个类
问题描述
编辑进一步澄清。
我正在尝试为我的简单订购 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;
}
}
解决方案
我不确定我是否正确理解了目的,但是如果您想总结DiscountedBill
and RegularBill
in 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() 方法实现接口。
推荐阅读
- symfony - 有条件地在 API-Platform 生成的 OpenAPI(又名 Swagger)文档上显示特定路由
- angular - 角度测试用例变量使用没有问题
- android - 如何创建选项页面
- ruby-on-rails - Rails:使用数据库前缀不起作用 - 使用多个数据库连接表查询
- azure - Azure Premium Verizon CDN 上的自动化规则引擎
- javascript - 在jsp中应用引导切换(折叠)
- database - MongoDB数据库设计:如何按客户分离数据?
- vb.net - 如何在没有替换功能的情况下替换字符串?
- javascript - 如何将反应儿童渲染为
而不是 {children} - websocket - nestjs + socket.io 在嵌套路径而不是主机的根目录中从微服务提供 websockets 总是返回 404 Not Found