gpt4 book ai didi

java - 我应该设计 JSF 页面 bean 调用多个外观还是单个外观来与系统内的多个模块交互?

转载 作者:搜寻专家 更新时间:2023-11-01 02:39:24 25 4
gpt4 key购买 nike

我正在阅读一个系统的代码,并试图理解服务层的设计。

我观察到对于每个对象(要保存到数据库的实体),将创建一组相关的类/实现如下:

  1. Product.java
  2. ProductDAO.java(接口(interface)类)
  3. ProductDAOImpl.java
  4. ProductService.java(接口(interface)类)
  5. ProductServiceImpl.java

以购物车为例,对于客户购买的每件产品,我都必须执行以下交易:

  1. 减少产品数量
  2. 保存订单
  3. 为批处理作业创建通知记录以发送电子邮件通知客户

我应该如何设计/实现它?

方法一

public class ShoppingCartPageBeanA {
private ProductService productService;
private OrderService orderService;
private NotificationService notificationService;

public void submit() {
productService.decreaseProductTotalQuantity(product);
orderService.saveOrder(order);
notificationService.saveNotification(notification);
}
}

方法#2

public class ShoppingCartPageBeanB {
private ShoppingCartService shoppingCartService;

public void submit() {
shoppingCartService.saveOrder(order);
}
}

public class ShoppingCartServiceImpl {

private ProductDAO productDAO;
private OrderDAO orderDAO;
private NotificationDAO notificationDAO;

public void saveOrder(Order order) {
productDAO.decreaseProductTotalQuantity(order.getProduct);
orderDAO.saveOrder(order);
notificationDAO.saveNotification(order.getNotification);
}

}

最佳答案

方法 #2 是可行的方法,因为它将您的业务逻辑封装在服务层中,从而使您能够遵循 DRY(即不要重复自己)原则。

假设,今天,您只为您的桌面网站实现(下订单)功能。将来,如果您需要将相同的内容添加到您的 Android 应用程序,您可以重用 ShoppingCartService, 如果您使用方法 #2。如果您要使用方法 #1,则必须在应用中复制您的业务逻辑。

关于java - 我应该设计 JSF 页面 bean 调用多个外观还是单个外观来与系统内的多个模块交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37760455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com