设计模式之委派模式
作者:互联网
1,目标
掌握委派模式,精简程序逻辑,提升代码的可读性。
2,定位
希望通过对委派模式的学习,让自己写出更加优雅的的代码
3,委派模式的定义
委派模式(Delegate pattern) 的基本作用就是负责任务的调用和分配任务,跟代理模式很像,可以看做是一种特殊情况下的静态代理的全权代理,但是代理模式注重过程,而委派模式注重结果。
不属于GOF 23种设计模式之一,属于行为型模式。
4,委派模式代码实现方式
我们以公司中大boss下方任务到项目经理,项目经理再将任务分配到具体开发人员为例子。
新建一个boss.java类
package com.packer.partten.delegate.simple;
/**
* Created by lijianfang on 2021/10/3.
*/
public class Boss {
public void command(String command,Leader leader){
leader.doing(command);
}
}
新建一个员工接口IEmployee.java,每一个员工都实现这个接口中的doing方法。
package com.packer.partten.delegate.simple;
/**
* Created by lijianfang on 2021/10/3.
*/
public interface IEmployee {
public void doing(String command);
}
分别新建员工A/B类
package com.packer.partten.delegate.simple;
/**
* Created by lijianfang on 2021/10/3.
*/
public class EmployeeA implements IEmployee {
@Override
public void doing(String command) {
System.out.println("我是A员工,我开始干活了,执行任务 = [" + command + "]");
}
}
package com.packer.partten.delegate.simple;
/**
* Created by lijianfang on 2021/10/3.
*/
public class EmployeeB implements IEmployee {
@Override
public void doing(String command) {
System.out.println("我是B员工,我开始干活了,我的任务是[" + command + "]");
}
}
创建一个项目经理类leader.java类
package com.packer.partten.delegate.simple;
import java.util.HashMap;
import java.util.Map;
/**
* Created by lijianfang on 2021/10/3.
*/
public class Leader {
//预先知道每一个员工的特长,特征,分发任务
private Map<String,IEmployee> register = new HashMap<String,IEmployee>();
public Leader(){
register.put("加密算法",new EmployeeA());
register.put("架构搭建",new EmployeeB());
}
public void doing(String command){
register.get(command).doing(command);
}
}
最后新建一个测试类delegateTest.java
package com.packer.partten.delegate.simple;
/**
* Created by lijianfang on 2021/10/3.
*/
public class delegateTest {
public static void main(String[] args) {
new Boss().command("加密算法",new Leader());
new Boss().command("架构搭建",new Leader());
}
}
测试结果为:
我是A员工,我开始干活了,执行任务 = [加密算法]
我是B员工,我开始干活了,我的任务是[架构搭建]
Process finished with exit code 0
标签:委派,lijianfang,doing,void,模式,command,new,设计模式,public 来源: https://blog.csdn.net/u013704199/article/details/120593806