我有一个需要通过不同类型的过滤器处理的活动列表,例如平台过滤器、应用程序过滤器、CampaignRunning 过滤器,以检查当前日期是否应该在开始日期和结束日期之间等。
理想情况下有 15-20 种不同的过滤器,我使用Intercept Design Pattern管理它们。
在应用过滤器之前列表可能为空,所以我应该NullValueFilter
在过滤器链中使用吗?
再次应用一些过滤器列表后可以为空,以检查我是否应该使用策略设计模式注入相同的空或空检查策略?
我通常会更多地考虑设计视角来管理此类案例。我想知道我是否在思考正确的方向,或者我是否在这方面过度设计。
一些伪代码来说明场景 -
Class NullValueFilter : IFilter {
Execute(List<CampaignList> campaignList) {
if(campaignList != null && campaignList.Count == 0) {
return false;
}
return true;
}
}
Class PlatformFilter : IFilter {
Execute(List<CampaignList> campaignList) {
if(campaignList != null && campaignList.Count == 0) {
return false;
}
campaignList = campaignList.Where( x => x.Platform == 'Mobile');
return true
}
}
Class CampaignRunningFilter : IFilter {
Execute(List<CampaignList> campaignList) {
if(campaignList != null && campaignList.Count == 0) {
return false;
}
// first Fetch campaign start date and end date
campaignList = campaignList.Where( x => x.startdate <= curr_date && x.enddate >= curr_date);
return true
}
}
我可以在这里想到两个选择 -
- 创建一个过滤器基类,可以管理列表的空和空检查。
- 使用构造函数注入在每个过滤器中注入空值过滤器实例,并调用该空值和空值检查方法。