java插槽模式(利用反射机制)

插槽模式,简而言之就是在即将开发的业务方法流程的某一个位置埋下一个点,未来可以在该位置去添加功能,在该位置添加的功能可以根据需要,随时可以去除去这个功能。
该模式和spring aop思想有相似的地方,但是该模式可以具体的业务方法的某一个位置,比较注重细节。
接下来,编写相关demo

  1. 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");
}

}

运行结果:


结果
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容