Spring设计模式(委派模式)

Spring设计模式(委派模式)

博客用于学习记录:方便以后回顾

委派模式 : 不关心过程,只关心结果

代理模式:不关心结果,只关心过程

观察者模式:关心的是过程中状态的改变,观察者和被观察者没有任务分发关系

学习来源 : 咕泡学院

模式的定义:

委派模式定义

​ 委派模式的原理为类B和类A是两个互相没有任何关系的类,B具有和A一模一样的方法和属性,并且调用B中的方法、属性就是调用A中同名的方法和属性。B好像就是一个受A授权委托的中介。第三方的代码不需要知道A的存在,也不需要和A发生直接的联系,通过B就可以直接使用A的功能,这样既能够使用到A的各种功能,又能够很好的将A保护起来,一举两得

模式的结构图 :

Spring设计模式(委派模式)

模式包含角色 :

**抽象任务:**委托人和被委托人共同实现的接口

**委派者角色:**具体任务的分配者

**具体任务角色:**具体任务的执行者

使用场景 :

派发工作任务,SelvletDispatcher

模式具体实现 :

一:抽象任务

public interface Target {
    public void doing(String command);
}

二:委派角色

public class Leader implements Target {

    private Map<String,Target> targets = new HashMap<String,Target>();
    
    public Leader() {
        targets.put("加密",new TargetA());
        targets.put("登录",new TargetB());
    }
    
    //项目经理自己不干活
    public void doing(String command) {
        targets.get(command).doing(command);
    }
}

三:具体任务角色

public class TargetA implements Target {
    public void doing(String command) {
        System.out.println("我是员工B,我现在开始干" + command + "工作");
    }
}
public class TargetB implements Target {
    public void doing(String command) {
        System.out.println("我是员工A,我现在开始干" + command + "工作");
    }
}

四 :测试

public class DelegateTest {
    @Test
    public void test_delegate(){
        new Leader().doing("加密");
    }
}