我应该设计JSF页面bean调用多个外观还是单个外观与系统中的多个模块进行交互?

ilovetolearn

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

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

  1. 产品.java
  2. ProductDAO.java(接口类)
  3. 产品DAOImpl.java
  4. ProductService.java(接口类)
  5. ProductServiceImpl.java

根据购物车示例,对于客户购买的每种产品,我将必须执行以下交易:

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

我应该如何设计/实施?

方法1

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应用程序中,那么如果使用方法2 ,就可以重用ShoppingCartService 如果要使用方法1,则必须在应用程序中复制业务逻辑。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在单个页面中调用多个模块?

来自分类Dev

PyMongo:我应该使用单个还是多个客户端?

来自分类Dev

如何在DNN中具有多个ascx文件的模块中使用门户网站外观

来自分类Dev

为什么我从Java进行系统调用时会丢失python中应该安装的模块?

来自分类Dev

我应该将数据存储在SESSION中还是使用多个Ajax调用?

来自分类Dev

外观设计模式是否也只涉及类/模块或实际的API调用?

来自分类Dev

我应该使用xcassets还是只更改一个图像的大小以在iOS中的多个设备上进行开发?

来自分类Dev

我应该在 Javascript 中使用多个变量还是单个对象?

来自分类Dev

检查Qt Creator中UI设计的外观

来自分类Dev

DNN带有一个模块的多个视图-容器外观未持久

来自分类Dev

DNN带有一个模块的多个视图-容器外观未持久

来自分类Dev

我应该使Restful Web App多个模块

来自分类Dev

在不更改UIButton外观(即呈灰色外观)的情况下,禁止UIButton进行交互

来自分类Dev

在JSF托管Bean中调用多个EJB方法,每个方法是否在相同或单独的事务中运行?

来自分类Dev

优化页面加载:多个CDN文件还是单个CDN文件?

来自分类Dev

Ansible 模块:我应该使用 systemd 还是 service 进行配置?

来自分类Dev

单个模块中的多个React组件

来自分类Dev

单个文件SPA中的多个模块

来自分类Dev

我该如何修复Chrome中的外观

来自分类Dev

单个css或多个css进行响应式设计-css速度

来自分类Dev

单个页面中多个dropzone的全局选项

来自分类Dev

单个页面中的多个Bootstrap模态

来自分类Dev

单个页面中的多个Bootstrap模态

来自分类Dev

我应该在页面上的每个组件中还是在父页面上为每个组件多次调用Axios?

来自分类Dev

我应该使用多个变量还是一部字典

来自分类Dev

Mojolicious:我应该使用一个还是多个Websocket?

来自分类Dev

平台或核心代码设计在微服务架构中的外观如何?

来自分类Dev

XSLT-将具有多个外观的两个节点的内容配对到每个外观的一个输出中

来自分类Dev

在页面中心创建页面外观

Related 相关文章

  1. 1

    在单个页面中调用多个模块?

  2. 2

    PyMongo:我应该使用单个还是多个客户端?

  3. 3

    如何在DNN中具有多个ascx文件的模块中使用门户网站外观

  4. 4

    为什么我从Java进行系统调用时会丢失python中应该安装的模块?

  5. 5

    我应该将数据存储在SESSION中还是使用多个Ajax调用?

  6. 6

    外观设计模式是否也只涉及类/模块或实际的API调用?

  7. 7

    我应该使用xcassets还是只更改一个图像的大小以在iOS中的多个设备上进行开发?

  8. 8

    我应该在 Javascript 中使用多个变量还是单个对象?

  9. 9

    检查Qt Creator中UI设计的外观

  10. 10

    DNN带有一个模块的多个视图-容器外观未持久

  11. 11

    DNN带有一个模块的多个视图-容器外观未持久

  12. 12

    我应该使Restful Web App多个模块

  13. 13

    在不更改UIButton外观(即呈灰色外观)的情况下,禁止UIButton进行交互

  14. 14

    在JSF托管Bean中调用多个EJB方法,每个方法是否在相同或单独的事务中运行?

  15. 15

    优化页面加载:多个CDN文件还是单个CDN文件?

  16. 16

    Ansible 模块:我应该使用 systemd 还是 service 进行配置?

  17. 17

    单个模块中的多个React组件

  18. 18

    单个文件SPA中的多个模块

  19. 19

    我该如何修复Chrome中的外观

  20. 20

    单个css或多个css进行响应式设计-css速度

  21. 21

    单个页面中多个dropzone的全局选项

  22. 22

    单个页面中的多个Bootstrap模态

  23. 23

    单个页面中的多个Bootstrap模态

  24. 24

    我应该在页面上的每个组件中还是在父页面上为每个组件多次调用Axios?

  25. 25

    我应该使用多个变量还是一部字典

  26. 26

    Mojolicious:我应该使用一个还是多个Websocket?

  27. 27

    平台或核心代码设计在微服务架构中的外观如何?

  28. 28

    XSLT-将具有多个外观的两个节点的内容配对到每个外观的一个输出中

  29. 29

    在页面中心创建页面外观

热门标签

归档