在以下情况下,我需要您的一些意见来决定正确的方法。
我目前正在开发电子商务应用程序(在线购物网站)。在这里,我必须在应用程序的主页上显示商店中可用产品的列表。最终用户可以将过滤器(包括/排除)应用于产品列表,以便仅显示满足所应用过滤器的产品。
因此,我的问题是关于将这些过滤器应用于Java层产品的正确设计。请注意,我将所有数据保存在Java层的内存中(哈希图)。我只想在此内存数据存储中应用从用户界面作为输入传递的过滤器,并返回过滤后的结果。
后端:托管在Tomcat上的Java应用程序。此应用程序运行着一个定期线程,该线程每30秒从文件系统读取/刷新一次产品数据,并将其保存在Java进程的内存中。
前端:Nginx上托管的React应用程序。对后端服务器进行剩余调用以获取数据。
我考虑的方法:
创建一个名为“ FilteredProducts”的类,该类具有属性(例如过滤条件)。使用策略模式对每种可能的过滤条件进行不同的实现,并根据作为输入传递的过滤条件将过滤条件应用于产品。
如果有任何建议的方式来处理此要求,谁能指导我?高度赞赏任何输入。请在这种情况下告诉我是否需要更多信息。
答案 0 :(得分:-1)
您可以创建一个接口或抽象类过滤器,并且可以为每个过滤器元素创建一个实现或扩展interdace / superclass的特定类。 然后,您可以实施matchs方法并检查哪些文章符合条件(例如:)
public interface FilterCriteria() {
public List<ShopElement> getMatchedProducts(int minPrice, int maxPrice);
}
public class PriceFilterCriteria implements FilterCriteria() {
@Override
public List<ShopElement> getMatchedProducts(int minPrice, int maxPrice) {
List<ShopElement> matchedProducts = new ArrayList<>();
foreach(ShopElement se : YourDataSource.getAllElements() ) {
if(se.getPrice() > minPrice && se.getPrice() < maxPrice) {
matchedProducts.add(se);
}
}
}
}
此模式实际上称为过滤器模式。 您的策略模式方法可能有效,但在这种情况下,我认为这是一种“错误放置”的方法,因为我认为策略模式主要用于更改客户端中的具体实现,而不是用于组合各种跨领域的过滤器。 / p>