使用WebDriver driver = new FirefoxDriver()和FirefoxDriver driver = new FirefoxDriver()创建驱动程序对象之间的区别?

时间:2018-09-21 11:37:19

标签: java selenium webdriver

我们可以使用以下方式创建驱动程序对象。

WebDriver driver = new FirefoxDriver();

FirefoxDriver driver = new FirefoxDriver();

FirefoxDriver是实现WebDriver接口的类。

在第一条语句中,我们使用接口名称,在第二条语句中,我们使用类名称。像我们无法访问某些方法等,两者之间有什么区别吗?

我在stackoverflow上寻找了这个问题,发现第一个是动态绑定,第二个是静态绑定,但是上面的两个声明之间有什么真正的区别吗?

如果我们没有什么不同,为什么我们应该有两个声明?

有人可以回答吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

这是基本设计原则:“ 编写接口而不是实现程序”。简单来说,这可以帮助我们将来轻松地更改数据结构,而无需进行大量修改。

假设今天您使用列表的一种实现,例如ArrayList。明天,您可能会意识到需要使用LinkedList。如果您已为接口编程,那只是一行更改,因为在代码的各处,您都在使用接口引用变量。另一方面,如果您已对实现进行编程,则需要更改对该变量的所有引用。这可能涉及更改方法的返回类型,方法参数,getter,setter等。

我们需要一种可以代替FirefoxDriverChromeDriver使用的类型。因此WebDriver driver = new FirefoxDriver()为您提供了同样的灵活性。

参考https://seleniumjava.com/2016/07/13/how-does-webdriver-driver-new-firefoxdriver-work/