看了mybatis源码之后,发现了大量的委派模式,并且最近在学习spring的源码的时候也发现了大量的委派模式,那么就大致看一下。还是结合场景来分析,我们程序员都有个上级,比如我们码农得听项目经理的话,项目经理得听老板的话,当老板布置一个任务给了项目经理,他不可能还要写代码三,所以就让我们码农写代码了,但是在老板看来,其实是项目经理完成的。这样就是简单的委派模式了。
/**
* 所有类的基类
*/
public interface Delegate {
void doWork();
}
//员工A
public class ExectorA implements Delegate{
@Override
public void doWork() {
System.out.println("A 开始干活了");
}
}
//经理
public class ExectorManager implements Delegate{
private Delegate delegate;
public ExectorManager(Delegate delegate) {
this.delegate=delegate;
}
@Override
public void doWork() {
delegate.doWork();
}
}
//测试代码
public static void main(String[] args) {
Delegate a=new ExectorA();
ExectorManager manager=new ExectorManager(a);
manager.doWork();
}
这样就是委派模式了,看起来似乎和适配器模式差不多,这点也是我当时迷迷糊糊的一点,后来仔细想一下,发现适配器的对象并不是一个源头,而委派模式则是同一源头。(项目经理和我们码农也都是公司员工)