【问题标题】:Design pattern for Filtering a custom datastructure过滤自定义数据结构的设计模式
【发布时间】:2012-03-19 06:27:40
【问题描述】:

我得到了以下数据结构,现在我需要应用规则来过滤给定的购物车。一个示例是过滤掉用户 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;
    }

【问题讨论】:

  • Chain of Responsibility 可用于制作过滤器链。另外(虽然这是关于实现的),我会对给定的购物车创建一个“视图”,根据应用的过滤规则,为每个组内的组和项目提供一个迭代器。
  • 澄清一下:您想从购物车中获取所有属于带有一些sellerId 的组并且在paymentOptions 中列出了一些paymentType 的物品吗?
  • 是的,一个典型的规则发布在购物车上的例子。以及所有可能形成的规则。

标签: java design-patterns collections


【解决方案1】:
  1. 如果对于每个 PaymentType,您需要执行某种不同类型的操作,那么您可以尝试 STATE PATTERN 并委托您的请求。

  2. DECORATOR PATTERN 用于在运行时添加额外的责任,所以我实际上没有找到那种场景,可能是我在某些地方遗漏了。

Further Items , Group 可以细分,还有 DECORATOR PATTERN 的可能性。

如果物品的数量是固定的,那么可以使用命令模式,UNDO 场景甚至有助于丢弃/接受物品到/从 CART

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-01
    • 2022-11-15
    • 2016-01-23
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 2015-10-10
    相关资源
    最近更新 更多