0

我可以使用这样的实用程序类吗?

public final class ProfessorDirectory {
    private static Map<String, Professor> directory = new HashMap<>();

    private ProfessorDirectory() {
        throw new IllegalStateException("Utility Class");
    }

    static void addProfessorsFromDescription(String description) {
        String regex = "(?<=\\n).*   .*(?=\\n)";
        Matcher m = Pattern.compile(regex).matcher(description);
        while (m.find()) {
            String professorName = Professor.formater(m.group(0));
            directory.put(professorName, new Professor(professorName));
        }
    }

    public static Professor get(String firstName, String lastName) {
        return directory.get(Professor.formater(firstName, lastName));
    }

}

我用它创建了一个库,您可以在其中检索老师的计划。

使用示例:

Planning professorPlanning = schedules.getPlanningOf(ProfessorDirectory.get("Jack", "Sticky"));

是在ProfessorDirectory内部初始化的,并且永远不应该由用户初始化。

4

1 回答 1

1

这种方法有一些缺点,即具有静态数据和方法的方法。

  1. 你永远不能拥有多个ProfessorDirectory,即使你发现拥有多个会很有用。

  2. 很难测试客户端ProfessorDirectory,因为他们必须使用真实代码而不是能够模拟接口。

  3. 您排除使用一些有用的模式。例如,您不能编写实现ProfessorDirectory接口并包装该接口的任意实现的缓存代理。

总的来说,这是一个不好的方法。

于 2021-02-13T12:29:54.133 回答