刚刚我们讲了如何定义抽象类,现在我们再来看一下,在 Java 这种编程语言中,我们如何
定义接口。
上面这段代码是一个比较典型的接口的使用场景。我们通过 Java 中的 interface 关键字定
义了一个 Filter 接口。AuthencationFilter 和 RateLimitFilter 是接口的两个实现类,分别
实现了对 RPC 请求鉴权和限流的过滤功能。
代码非常简洁。结合代码,我们再来看一下,接口都有哪些特性。我也总结了三点。
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// 接口
public interface Filter {
void doFilter(RpcRequest req) throws RpcException;
}
// 接口实现类:鉴权过滤器
public class AuthencationFilter implements Filter {
@Override
public void doFilter(RpcRequest req) throws RpcException {
//... 鉴权逻辑..
}
}
// 接口实现类:限流过滤器
public class RateLimitFilter implements Filter {
@Override
public void doFilter(RpcRequest req) throws RpcException {
//... 限流逻辑...
}
}
// 过滤器使用 demo
public class Application {
// filters.add(new AuthencationFilter());
// filters.add(new RateLimitFilter());
private List<Filter> filters = new ArrayList<>();
public void handleRpcRequest(RpcRequest req) {
try {
for (Filter filter : fitlers) {
filter.doFilter(req);
}
} catch(RpcException e) {
// ... 处理过滤结果...
}
// ... 省略其他处理逻辑...
}
}