java filter 模式,Java设计模式----过滤器模式(挑三拣四)
過濾器模式
描述
攔截過濾器模式(Intercepting Filter Pattern)用于對應用程序的請求或響應做一些預處理/后處理。定義過濾器,并在把請求傳給實際目標應用程序之前應用在請求上。過濾器可以做認證/授權/記錄日志,或者跟蹤請求,然后把請求傳給相應的處理程序。以下是這種設計模式的實體。
實質(參考過濾器鏈工作):
原始數據->過濾器1->過濾器2->過濾器3->最終需要的數據
場景
此篇我們以垃圾回收回收為例來描述這一模式
我們需要在一堆垃圾中 選出各種各樣的垃圾 來進行分類 然后再過濾出來不是垃圾被回收掉的東西
UML類圖
編碼
定義垃圾的屬性(攔截器)
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Rubbish {
private String name;
private boolean isA;
private boolean isB;
private boolean isC;
}
創建一個檢查垃圾的接口(攔截器)
public interface CheckRubbish {
public List check(List list);
}
編寫有哪幾種垃圾(幾種攔截器)
public class A implements CheckRubbish {
@Override
public List check(List list) {
List A_list = new ArrayList<>();
list.forEach(item -> {
if (item.isA()) {
A_list.add(item);
}
});
return A_list;
}
}
public class B implements CheckRubbish {
@Override
public List check(List list) {
List B_List = new ArrayList<>();
list.forEach(item -> {
if (item.isB()) {
B_List.add(item);
}
});
return B_List;
}
}
public class C implements CheckRubbish {
@Override
public List check(List list) {
List C_List = new ArrayList<>();
list.forEach(item -> {
if (item.isC()) {
C_List.add(item);
}
});
return C_List;
}
}
測試 : 我們創建一個list(垃圾堆) 用來進行垃圾過濾
public class Test {
public static void main(String[] args) {
List list = new ArrayList<>();
list.add(new Rubbish("過期香蕉", true, false, false));
list.add(new Rubbish("過期牛奶", false, false, true));
list.add(new Rubbish("過期紙巾", false, true, false));
list.add(new Rubbish("正常牛奶", false, false, false));
A a = new A();
B b = new B();
C c = new C();
System.out.println("A 垃圾");
printRubbish(a.check(list));
System.out.println("B 垃圾");
printRubbish(b.check(list));
System.out.println("C 垃圾");
printRubbish(c.check(list));
}
private static void printRubbish(List list){
list.forEach(System.out::println);
}
}
垃圾分類:
A 垃圾
Rubbish(name=過期香蕉, isA=true, isB=false, isC=false)
B 垃圾
Rubbish(name=過期紙巾, isA=false, isB=true, isC=false)
C 垃圾
Rubbish(name=過期牛奶, isA=false, isB=false, isC=true)
過濾出來的不是垃圾的:
list.add(new Rubbish("正常牛奶", false, false, false));
呈易
發布了16 篇原創文章 · 獲贊 5 · 訪問量 1799
私信
關注
標簽:false,List,list,垃圾,new,挑三揀四,Java,設計模式,public
來源: https://blog.csdn.net/qq_42252844/article/details/104517682
總結
以上是生活随笔為你收集整理的java filter 模式,Java设计模式----过滤器模式(挑三拣四)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mac设置首页访问php,mac系统下p
- 下一篇: java项目processes设置,Jv