首页 > 解决方案 > 责任链自动生成器

问题描述

我有 8 个处理程序类,有没有办法可以在 java 中动态创建链?

我的意思是,如果我现在有两个课程,例如:

处理程序A

处理程序B

处理程序链

HandlerChain 将创建链,HandlerA->HandlerB,(使用循环从文件夹中读取所有类名)

当我添加 HandlerC 时,它会自动添加而无需任何交互,并且链变为 HandlerA->HandlerB->HandlerC。

-------------------------------------------------- ------

所以如果我有 String className = "HandlerA"

我使用隐私字符串创建 HandlerA.class 实例的方式是什么?

标签: javadesign-patternschain-of-responsibility

解决方案


    File folder = new File("JavaClassesPath");
    ArrayList<String> all = new ArrayList<>();
    for (final File fileEntry : folder.listFiles()) {
        if (!fileEntry.isDirectory()) {
            all.add(fileEntry.getName().substring(0, fileEntry.getName().lastIndexOf('.')));
        }
    }

    String className = "PackageName";

    for (String s: all) {
        if (!s.equals("AbstractClassName")) {
            Class<?> clazz = Class.forName(className + '.' + s);
            Constructor<?> ctor = clazz.getConstructor();
            Object object = ctor.newInstance();
            allHandlers.add((RequestHandler) object);
        }
    }

    for(int i=0; i<allHandlers.size()-1; i++){
        allHandlers.get(i).setNextHandler(allHandlers.get(i+1));
    }

推荐阅读