“前人栽树,后人乘凉”,搞Java的,不知道模式,那这人绝对还未入流。但经常是写了这么多代码,看看才发现,原来前人早就总结过了,自己满头大汗的栽了棵树苗,蓦然回首,擦,远方已经有棵大树鸟。
就拿这个模式来说,名字挺吓人的,其实估计搞过Java(或者被搞)的大概都会用过,业务场景是,对于输入输出流,JDBC连接等资源,一般的处理方式是谁开启的就由谁负责关闭资源,其中必然涉及对于异常的处理,而如果这个资源不仅仅是当前对象要用,还可能传递给别的对象使用的话,一般的做法就是。。。不说废话了,贴代码吧:
public void useResource(ResourceUser user){
Resource resource = null;
try{
user.use(resource.open());
}
catch (Exception e){
user.onError(e);
}
finally{
if (resource != null){
try{
resource.close();
}
catch (Exception e){
user.onError(e);
}
}
}
}
其它的资源使用者直接在use()方法里面做自己的相关业务就行了。
这种处理方式学名就叫Execute Around Method,其实不光资源处理是这种方式,稍微扩展一下会发现,什么AOP、动态代理的处理也是这种方式。
“一开始没有模式,起了个名字就是模式”。。。