访问者模式课后作业
来源:26-2 访问者模式coding
ych_1997
2019-06-11
课程连接:https://coding.imooc.com/lesson/270.html#mid=19400
问题:新加入一个访问角色:老板。访问的权限不一样,如何去拓展。
我的答案:
- 应用层使用【Visitor接口实现类】使用接口方法visit,参数为【Course抽象类子类】,但是这么写会无法解析visit()的具体参数,所以以下解决这个问题。
for (Visitor visitor : visitorArrayList) {
for (Course course: courseArrayList) {
visitor.visit(course);
}
}
- 修改接口实现
- 新建接口实现类(老板)
public interface Visitor {
void visit(CodingCourse codingCourse);
void visit(FreeCourse freeCourse);
// jdk1.8 可以在接口写实现, 用来处理应用层报错
default void visit(Course course){
if(course instanceof CodingCourse){
visit((CodingCourse)course);
} else if(course instanceof FreeCourse){
visit((FreeCourse)course);
} else {
throw new UnsupportedOperationException("无访问权限,请联系管理员开通");
}
}
}
具体问题:
【已修改】将代码 visitor.visit(course);
改为course.accept(visitor);
就不存在本问题了
【原因】自己看完视频后才敲代码,细节没有根据老师的思路来,应用层写错了
写回答
2回答
-
同学,很棒哦,赞!!!
012019-06-11 -
Kevin7012055
2020-10-26
老师您好:
这个课后作业老板可以继承vistor实例做装饰者模式实现吗?
00
相似问题