jdk8的Function函数是真的香,把方法分装成参数进行传递,凭借这个特性来代替原来写模版方法的方式.(只兼容jdk8以上版本)
原来我们为了抽象出具体执行方法而写模版方法,首先要定义一个接口
public interface TestTemplate {
Object process(Object object);
}
在去写调用模版方法的代码
public class Test {
public void runTemplate(TestTemplate testTemplate){
testTemplate.process(new Object());
}
}
最后在调用此代码的方法中调用这个方法同时 在去实现具体实现代码
public void testRun(){
runTemplate(new TestTemplate() {
@Override
public Object process(Object object) {
// your code
return null;
}
});
}
其实已经实现了目的,接口了具体实现,抽象了行为,但是你要定义一个接口类进去,有人会说写一个公用的不就可以了,但是我认为往往在团队开发不好去传达开发规范的时候五花八门的类就一个个蹦出来了,此时此刻的代码就是一个字 淦
下面是Function函数的实现,我们不用定义接口类而是入参变为Function函数
public void runTemplate(Function function){
function.apply(null);
}
这时候调用方具体方法逻辑实现代码:
public void testRun(){
runTemplate(new Function() {
@Override
public Object apply(Object o) {
//your code
return null;
}
});
}
是不是很香 而且转化为lamda表达式的代码更简洁
public void testRun(){
runTemplate(o -> {
//your code
return null;
});
}
java很冗余,团队开发很不好完全规范,我还是想传递给别人的匠心的思想,如果不行我也只能守候我自己的那一片净土