当前位置: 首页 > 知识库问答 >
问题:

是否有一种方法可以避免在Visitor模式中的每个元素中使用self invoke的方法?

锺离慈
2023-03-14
interface ICarElementVisitor {
    void visit(Engine engine);
}

interface ICarElement {
    //want to use this
    void accept(ICarElementVisitor visitor); // CarElements have to provide accept().
}

static class Engine implements ICarElement {
    ...
    //want to avoid using this
    public void accept(ICarElementVisitor visitor) {
        visitor.visit(this);
    }
}
...
public void accept(ICarElementVisitor visitor) {
    for (ICarElement elem : elements) {
        elem.accept(visitor);
    }
    visitor.visit(this);
}
    ...
static class CarElementDoVisitor implements ICarElementVisitor {

    public void visit(Engine engine) {
        System.out.println("Starting my engine");
    }

}

是否有一种方法可以避免在访问者模式中的每个元素中使用self invoke的方法,而使用父类的全局方法?或者,我是否可以传递父对象并知道该对象是什么实例,而不需要instanceof if或switch?

共有1个答案

白宏大
2023-03-14

我认为您必须这样做,以确保为所有IcareLementVisitor中的所有IcareLementVisitor中的所有visity()方法具有相应的visity()方法

因此,如果您编写了一个新的icarement,假设IWheel,一年后您不记得所有的访问者已经存在,那么您将不得不实现accept(ICarElementVisitor)方法dovisitor.visit(this);这样做时编译器会说:“ICarElementVisitor中没有方法visit(IWheel)!”因此,您将在icarelementvisitor接口中添加visity(IWheel),编译器将说“CarelementDovisitor不要实现icarelementvisitor的所有方法!”您将在CarelementDovisitor中实现visit(IWheel),因此可以避免回归。

我认为这样做的意义并不是无用的,事实上是一件好事。

 类似资料:
  • 有深紫色、蓝色和棕色。有没有一种方法可以把整个语句只分配一种颜色?这会让我更容易阅读。我希望其他人保持现状。 我不知道这样的工具是否存在,你只能改变某些语句的颜色,但有一个会很酷!

  • 但我对它并不完全满意,主要有两个原因 我“滥用”了函数。在Stream API中,每个函数都有其明确、明确的用途:被认为是计算最大值,被认为是根据条件进行筛选,被认为是生成增量累加的值,等等。 这样做会阻止我使用Streams强大的机制:如果我想将搜索限制在前两个结果上怎么办? 这里我使用了,因为(据我所知)它是唯一一个允许比较两个值的函数,而这些值可以在某种程度上导致类似于“当前值”和“下一个值

  • 据我所知,这个问题实际上只有在使用Chrome浏览器执行web测试自动化时才相关,因为click事件是用Selenium Webdriver和ChromeDriver实现的。为了引言,我使用并意识到通过使用Watir元素函数“present?”来找到一个元素,根据我的理解,它本质上是“visible?”的组合。和“存在?”。我还可以在需要时找到一个具有Webdriver元素函数的元素,以识别一个元

  • 我想删除一些与其他输出值相同的输出!因为Test1=Test2=Test5=Test6,所以我希望它在控制台上只显示Test1!Test3=Test4=Test7=Test8,所以我希望它只显示Test3。。。。。。。。 以下代码是我所做的: 以下是我的输出:

  • 我只需要一个标题,味精和按钮警报对话框,但显示为底部工作表。 哪里有一种方法可以获得这个(没有自定义视图)?

  • 本文向大家介绍jQuery判断一个元素是否可见的方法,包括了jQuery判断一个元素是否可见的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery判断一个元素是否可见的方法。分享给大家供大家参考。具体如下: jQuery 可以很容易地确定一个元素是可见的或是隐藏的,然后分别做不同的处理。如:我想根据某 div 是否可见,在按钮上显示不同的文字和图标。可以这样实现: 方法一: 方