4、Delegate委派模式

2019-04-01  本文已影响0人  冰镇柠檬_tree

1.1 描述

1.2 原理

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

2、Code 演示

1)定义抽象任务角色接口
public interface IExector { 
    //员工执行任务
    void task();
}
2) 具体任务角色,实现上面的接口,这里定义两个实现类,被委派者
//员工A
public class ExectorA implements IExector {
    @Override
    public void task() {
        System.out.println("A员工开始执行任务");
    }
} 

//员工B
public class ExectorB implements IExector {
    @Override
    public void task() {
        System.out.println("B员工开始执行任务");
    }
}
3) 委派角色, 是整个模式的核心角色
//调度:项目经理
public class Dispatcher {
    //指定的执行者
    private IExector exector;

    public Dispatcher(IExector exector) {
        this.exector = exector;
    }
    //项目经理:虽然也有执行方法
    //但是他的工作职责是不一样的
    public void task() {
        this.exector.task();
    }
}
4) Demo

创建委派者类对象,委派者类对象在根据要求委派A去完成任务。

public class DispatcherTest {
    public static void main(String[] args) {
        //看上去好像是我们的项目经理在干活\
        //实际干活的人是普通员工
        Dispatcher dispatcher = new Dispatcher(new ExectorA());
        //这就是典型的干活是我的,功劳是你的。
        dispatcher.task();
    }
} 
上一篇下一篇

猜你喜欢

热点阅读