Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于过滤自定义数据结构的设计模式_Java_Design Patterns_Collections - Fatal编程技术网

Java 用于过滤自定义数据结构的设计模式

Java 用于过滤自定义数据结构的设计模式,java,design-patterns,collections,Java,Design Patterns,Collections,我已经得到了下面的数据结构,现在我需要应用规则来过滤给定的购物车。例如,过滤掉用户bob列出的所有项目,并使用信用卡支付方式。该规则取决于具体情况 在我的请求和响应中,下面所有这些都是复杂的类型,具体实现没有实现接口 最好的设计模式是什么来分离我的数据结构和应用于它的规则。装饰图案有用吗?欢迎你的建议 public class PaymentType { private String paymentType; } public class Items {

我已经得到了下面的数据结构,现在我需要应用规则来过滤给定的购物车。例如,过滤掉用户bob列出的所有项目,并使用信用卡支付方式。该规则取决于具体情况

在我的请求和响应中,下面所有这些都是复杂的类型,具体实现没有实现接口

最好的设计模式是什么来分离我的数据结构和应用于它的规则。装饰图案有用吗?欢迎你的建议

   public class PaymentType {
        private String paymentType;
    }

    public class Items {
        private Integer itemId;
        private String category;
        private List<PaymentType> paymentOptions;
    }

    public class Group {
        private Integer sellerId;
        private List<Items> itemList;
    }

    public class Cart {
        private Integer cardId;
        private List<Group> group;
    }
公共类付费类型{
私有字符串paymentType;
}
公共类项目{
私有整数itemId;
私有字符串类别;
私人列表支付选项;
}
公共课组{
私有整数sellerId;
私人清单项目清单;
}
公共类购物车{
私有整数卡;
私有列表组;
}
  • 若对于每个PaymentType,您都需要执行一些不同类型的操作,那个么您可以尝试状态模式并委托您的请求

  • DECORATOR模式用于在运行时添加额外的责任,所以我实际上并没有发现这种情况,可能是我遗漏了某一点

  • 进一步的项目,组可以细分,并有一个装饰模式的可能性


    如果项目的数量是固定的,那么可以使用命令模式,撤销场景甚至有助于将项目丢弃/接受到购物车或从购物车中取出项目

    可以用来生成一个过滤器链。另外(这是关于实现的),我会对给定的购物车进行“查看”,根据应用的过滤规则,该购物车为每个组中的组和项目提供迭代器。为了澄清:您想从购物车中获取属于具有一些sellerId的组的所有项目,并且在paymentOptions中列出一些paymentType?是的,在购物车上张贴规则的一个典型示例。以及所有可能形成的规则。