Bridge 设计模式在 Java 中是否只有一个抽象类和接口类?

问题描述

我真的很难在 Java 中思考抽象和接口类吗?

这里有一个例子: 我们有 2 个用户在 School 系统中具有相同和不同的操作 老师:可以添加练习查看练习 学生:可以查看提交练习 我们有 2 个不同的用户,不同的动作和相同的动作。 那么我们怎样才能做到一个抽象的类和接口呢?

解决方法

不应该只有一个类 - 行为不同的事物应该由不同的类表示。

如果你想使用一个接口和一个抽象类...

为共享行为创建一个接口:

interface ExerciseViewer {
    void view(Exercise exercise);
}

然后为扩展抽象基类的每种类型的人创建具体的类:

abstract class SchoolPerson implements ExerciseViewer {
    public void view(Exercise exercise) {
         // some implemention
    }
}

class Teacher extends SchoolPerson {
    public void add(Exercise exercise) {
        // some implementation
    }
}

class Student extends SchoolPerson {
    public void submit(Exercise exercise) {
        // some implementation
    }
}

但是,我不会这样做。相反,我会创建两个具体的类来实现没有方法的 ExerciseViewer(请参阅 marker interface),一个 Exam 类和一个单独的 ExerciseService 类,该类处理具有适当参数类型的操作。