静态代理:在程序运行之前就存在的编译好的代理类。 实施步骤:
1. 定义业务接口。
2.实现业务接口。
3、定义代理类并实现业务接口,最后通过客户端调用。
动态代理:在程序运行过程中根据需要动态创建代理类及其实例,完成功能
public class CodingServiceProxy implements CodingService{
private CodingService codingService;
public CodingServiceProxy(CodingService codingService){
this.codingService = codingService;
}
@Override
public String debug(String name) {
System.out.println("预处理...");
String result = codingService.debug(name);
System.out.println(result);
System.out.println("后处理...");
return result;
}
代码重构 - 尝试使每个方法都可以针对大量 if/else 进行单元测试
private static Map methodsMap = new HashMap<>();
//首先取出状态码,然后根据状态码获得相应的要调用方法的方法名,然后使用java的反射机制就可以实现对应方法的调用了。
static {
// value 是属性CountRecoder的方法名
methodsMap.put(1, "setCountOfFirstStage");
methodsMap.put(2, "setCountOfSecondStage"