Service-Layer或Facade-Layer类可以是可选的吗?

2020-09-27 06:41发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


假设我有一个控制器,可以根据产品代码加载产品。 我是否需要创建一个Facade类来委派给一个Service类,并将其委派给一个Product DAO?

我在想,对于像这样的简单情况,可以直接将DAO注入到控制器中,因为添加其他两个类不会带来任何附加值。

如果您使用Hybris文档或其他参考网址中的参考URL来备份您的答案,我会很高兴。

谢谢

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


假设我有一个控制器,可以根据产品代码加载产品。 我是否需要创建一个Facade类来委派给一个Service类,并将其委派给一个Product DAO?

我在想,对于像这样的简单情况,可以直接将DAO注入到控制器中,因为添加其他两个类不会带来任何附加值。

如果您使用Hybris文档或其他参考网址中的参考URL来备份您的答案,我会很高兴。

谢谢

付费偷看设置
发送
4条回答
悻福寶寶
1楼-- · 2020-09-27 07:26

不应推荐在控制器上注入dao层的方法。HybrisCommerce平台和加速器代码大量使用了Spring框架。 因此春季将始终遵循MVC模式。杂草中的每一层都有其重要性和清晰的分隔

层说明:

DAO层:DAO可以包含多种用于典型CRUD操作的方法。 对于Hybris Commerce项目,建议将所有"灵活搜索"查询放置在数据访问对象中。

服务层:服务的目的是覆盖业务逻辑。

Facade:Facade用于将业务逻辑暴露给前端控制器,并且仅应使用Facade,服务,转换器,填充器和数据传输对象(DTO)

进行层分离的主要目的是避免层之间的松散耦合和清晰分离,从而简化开发阶段。

2楼-- · 2020-09-27 07:23

因此,您的意思是我必须创建调用HouseService.loadHouseById()并调用HouseDao.loadHouseById()的HouseFacade.loadHouseById()吗? 是不是太过分了? 代表链?

哎,真难
3楼-- · 2020-09-27 07:28

Hybris不要求编写立面和服务,但这不是一个好的建议做法。 您将失去可扩展性。 每个层都有各自的关注点,最好使用分层体系结构来支持可扩展性和Omni通道。

例如-如果您的应用程序同时支持Web和移动设备,则您可能会使用不同的控制器。 理想情况下,您将逻辑放在服务层,并在外观层填充DTO。 如果您遵循此步骤,则可以在Web和移动控制器中使用相同的逻辑/服务和外观。

Ex-如果使用分层体系结构,则很容易在hybris中自定义OOB代码。 如果您需要覆盖购物车计算逻辑,那么只有在拥有自己的服务并扩展购物车计算服务的情况下,您才可以这样做。

有关更多详细信息,您可以参考hybris建议的编码标准- https://wiki。 hybris.com/display/hybrisALF/Coding+Standards

微wx笑
4楼-- · 2020-09-27 07:09

我不明白您的第一个示例。 最后,您可能都需要两个控制器。 如果您需要逻辑,则当然必须创建服务,而不是将其放在控制器层上。 我要强调务实和YAGNI。

一周热门 更多>