gpt4 book ai didi

java - 如何组织这些抽象页面对象方法?

转载 作者:行者123 更新时间:2023-12-01 04:51:53 25 4
gpt4 key购买 nike

这确实是一个常见的 Java 问题,但我认为用它产生的特定 Webdriver 角度来解释会更容易。

我有一个复杂的页面对象,我现在想要将其抽象化,因为我发现另一个页面非常相似,但在关键方面有所不同。现在,我的许多返回页面对象实例的方法都被破坏了。我想将这些方法的大部分代码保留在抽象类中,并且仍然让它们返回新子类的实例;这些方法应该返回调用它们的任何子类的新实例。

这里是一个带有 navNextPage 方法的示例,该方法对于两个子类都是通用的。这似乎可行,但感觉不对:

public abstract class PresContentPage {
protected PresContentPage navNextPage() {
// code to navigate to the next page goes here
return null;
}
}

public class MainContent extends PresContentPage {
public MainContent navNextPage() {
super.navNextPage();
return new MainContent(...);
}
}

// And so on with another subclass...

所以,这就是我想要的:navNextPage 方法的代码被隔离在抽象类中,但被调用的版本将返回调用该方法的类型的页面对象。

我只是觉得我的 protected 方法返回 null 是不对的,它不是也不可能为 void。但由于它是 protected ,并且它是一个抽象类,所以无论如何都没有人能够调用它,对吗?这样就可以了吗?有没有一种我从未学过的更好的方法来做到这一点?

我想到的另一个选择是只创建一个具有不同名称的 void 方法,例如 navNextPageVoid ,并让子类调用该方法而不是 super.navNextPage,但是.. .从不同的角度来看,这似乎有点恶心。

提前致谢!

最佳答案

通常,如果您想强制在专门化中实现一个方法,您可以将其设置为 abstract in the generalisation 。因此

public abstract class PresContentPage { abstract PresContentPage navNextPage(); }

关于java - 如何组织这些抽象页面对象方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14816310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com