访问者模式课后作业

来源:26-2 访问者模式coding

ych_1997

2019-06-11

课程连接:https://coding.imooc.com/lesson/270.html#mid=19400
问题:新加入一个访问角色:老板。访问的权限不一样,如何去拓展。
我的答案:

  1. 应用层使用【Visitor接口实现类】使用接口方法visit,参数为【Course抽象类子类】,但是这么写会无法解析visit()的具体参数,所以以下解决这个问题。
for (Visitor visitor : visitorArrayList) {
	for (Course course: courseArrayList) {
	    visitor.visit(course);
	}
}
  1. 修改接口实现
  2. 新建接口实现类(老板)
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回答

geelylucky

2019-06-11

同学,很棒哦,赞!!!

0
1
ych_1997
非常感谢!
2019-06-11
共1条回复

Kevin7012055

2020-10-26

老师您好:

这个课后作业老板可以继承vistor实例做装饰者模式实现吗?

0
0

Java设计模式精讲-Debug方式+内存分析

系统学习设计原则,设计模式,锤炼编码内功,赢取高薪Offer

3430 学习 · 407 问题

查看课程