blu*_*sky 5 java design-patterns
我有一个将被过滤的对象列表.
此过滤将包含至少3个规则.
例如:
public class Filtering {
List<MyObject> myObjectList;
List<MyObject> filterStep1(List<MyObject> myObjectList){
for(Myobject myobj : myObjectList){
if(isCriteriaSatisified){
continue
}
else {
removeThisObjectFromList
}
}
}
List<MyObject> filterStep2(List<MyObject> myObjectList){
for(Myobject myobj : myObjectList){
if(isCriteriaSatisified){
continue
}
else {
removeThisObjectFromList
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我喜欢这种方法,因为它简单,自包含,可以很容易地看到想要实现的目标.
但也许我应该使用一种设计模式呢?
我正在考虑"责任链"模式,上面代码中的filterStep1和filterStep2将被重构为单独的处理程序.
这是“管道和过滤器”模式,虽然您的实现没问题,但最好不要在方法中硬编码过滤逻辑。相反,Predicate<MyObject>为每个布尔条件编写一个(Java 8 中内置的或 Guava 中的)。这更容易测试,并且可以轻松应用于现有的干净 API,例如 Streams API 或 Guava 的集合视图。
| 归档时间: |
|
| 查看次数: |
1168 次 |
| 最近记录: |