设计模式-委派模式

    我们知道Java里共有23种设计模式,负责任务的调度和任务的分配,委派模式不属于GOF 23种设计模式之一,委派模式属于行为型设计模式。

委派模式

定义

委派模式又称委托模式,将任务的分配和执行分离开来,可以看做是一种特殊情况下的静态代理的全权代理。

适用场景

(1) 委派对象本身不知道如何处理一个任务(或请求),把请求交给其他对象处理。
(2) 实现程序的解耦。

优点

(1) 通过任务的委派能够将一个大型的任务细化。
(2) 能够加快任务的执行效率。

缺点

(1) 需要根据任务的复杂程度进行不同的改变。
(2) 在任务复杂的情况下可能需要多重委派,容易造成紊乱。

实例

/**
 * 创建抽象接口
 */
public interface IEmployee {
    void doSomething(String task);
}
/**
 * 创建IEmployeeA类
 */
public class IEmployeeA implements IEmployee {

    @Override
    public void doSomething(String task) {
        System.out.println("我是员工A,我擅长" + task + "工作");
    }
}
/**
 * 创建IEmployeeB类
 */
public class IEmployeeB implements IEmployee {

    @Override
    public void doSomething(String task) {
        System.out.println("我是员工B,我擅长" + task + "工作");
    }
}
/**
 * 创建Leader类 委派类用于任务调度与分配
 */
public class Leader implements IEmployee {

    private Map<String, IEmployee> map = new HashMap<String, IEmployee>();

    public Leader() {
        map.put("编程", new IEmployeeA());
        map.put("UI", new IEmployeeB());
    }

    @Override
    public void doSomething(String task) {
        if (!map.containsKey(task)) {
            System.out.println("超出能力范围");
            return;
        }
        map.get(task).doSomething(task);
    }
}
/**
 * 创建Boss类
 */
public class Boss {

    //Boss下达命令
    public void command(String task, Leader leader) {
        leader.doSomething(task);
    }
}
/**
 * 创建测试类
 */
public class Test {

    public static void main(String[] args) {
        new Boss().command("编程", new Leader());
        new Boss().command("UI", new Leader());
        new Boss().command("数据分析", new Leader());
    }
}
以上为个人对委派模式的总结。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。