插槽模式,简而言之就是在即将开发的业务方法流程的某一个位置埋下一个点,未来可以在该位置去添加功能,在该位置添加的功能可以根据需要,随时可以去除去这个功能。
该模式和spring aop思想有相似的地方,但是该模式可以具体的业务方法的某一个位置,比较注重细节。
接下来,编写相关demo
- ZNservice
/**
* 业务类
*/
public class ZNservice {
private PublicService publicService = new PublicService();
public boolean add() throws Exception{
//检测数据
System.out.println("检测数据");
// 埋点
System.out.println(publicService.registered("com.zn.demo.znstudy.ZNserviceImpl-empty"));
//组装数据
System.out.println("组装数据");
//插入数据库
System.out.println("插入数据");
return true;
}
}
2.PublicService
public class PublicService {
// 注册业务方法
public boolean registered(String str) throws Exception {
// 获取类名与方法
String[] strList = str.split("-");
String className = strList[0];
String methodName = strList[1];
// 获取类实例
Class<?> serviceClass = Class.forName(className);
Object instance = serviceClass.newInstance();
// 获取类方法
Method method = serviceClass.getMethod(methodName, new Class[]{});
// 运行方法
method.invoke(instance, new Class[]{});
return true;
}
}
3.ZNserviceImpl
public class ZNserviceImpl {
public void empty(User user){
System.out.println(user.getId());
System.out.println("数据检测中");
}
public void fun(User user){
System.out.println(user.getId());
System.out.println("shu");
}
}
运行结果: