考虑到外观不应该有任何逻辑,我可以根据服务需要转换传入的对象吗?

问题描述 投票:0回答:1

考虑到外观不应该有逻辑,将其传递给服务,这段代码是否正确使用了外观模式?我正在制作地图并对数据进行分组,并在需要它的其他服务中使用返回值。

public List<OrderOutput> checkout(ListOfOrderInput listOfOrderInput){
        var orderList = listOfOrderInput.mapToOrderList();
        var orderItems = orderList.stream()
                .flatMap(order->order.getItems()
                        .stream())
                .toList();
        var groupedOrders = orderSupplyService.groupsOrders(orderList);
        orderSupplyService.setsOrderListData(groupedOrders);
        orderItemService.setItemsCode(groupedOrders);
        itemAmountCalculatorService.calculateDesiredAmount(groupedOrders);

        var ordersToInsert = orderService
                .buildsDistinctOrderList(orderList);

        orderSupplyService.registerOrderList(ordersToInsert);
        orderItemService.registerOrderItems(ordersToInsert);
        orderSupplyService.checkoutOrders(ordersToInsert);

        var orderReturnList = orderReturnService.getOrderReturnList(ordersToInsert);
        orderReturnItemService.buildsOrdersReturnItems(orderReturnList);

        orderFacadeIntegration.sendCreatedOrders(orderReturnList.stream()
                .map(OrderModel::mapToOrderIntegration)
                .toList());

        return orderReturnList.stream()
                .map(OrderModel::mapToOrderOutput)
                .toList();
    }
design-patterns facade
1个回答
0
投票

考虑外观不应该有逻辑

我认为基于Facade模式可以解决的一个问题:

  • 为了让复杂的子系统更容易使用,应该为子系统中的一组接口提供一个简单的接口。

它必然包含一定的逻辑。重塑数据以便将其传递给隐藏在外观下的对象是完全可以的。

另外我想说你不应该太担心名字——设计模式是一般原则,不完全遵循它们是完全可以的。主要目标是生产可维护和可重用的软件,虽然正确命名是有用的,但这不是目标。

© www.soinside.com 2019 - 2024. All rights reserved.