2

我正在使用页面对象模式对我的 Web 应用程序交互进行建模。应用程序中的大多数页面都有一些标准选项,如“登录”、“注销”、“主页”等。此外,它们都有受保护的 WebDriver 引用。

所以我创建了一个所有页面都会继承的超超类——GrandpaClass。这将只包含一个受保护的 WebDriver 引用和一个用于初始化驱动程序的构造函数。

然后我创建了一个大多数页面都会继承的超类——PapaClass。它继承了GrandpaClass并添加了我上面列出的标准菜单功能(登录等)

当相同的菜单操作可能导致显示不同的页面时,就会出现问题。例如,当您注销时,您可以转到登录页面,也可以返回错误页面。但是由于登录功能在PapaClass中,这个类必须返回从他继承的不同页面。这使得超类依赖于它的子类。

我正在考虑使用诸如Strategy之类的东西来分解常见的菜单功能。所以PapaClass不会维护功能,只会维护对Menu对象的引用。

这是一个好主意,还是有更优雅(或更简单)的方法来解决这个问题?

谢谢。

4

2 回答 2

2

我认为您的 Menu 对象是个好主意,但您不需要PapaClass。您可以让所有页面都从GrandpaClass继承,并在有共同元素的地方使用Composition 。通过继承,您说的是“带有菜单的页面”,这表明该页面应该只有一个菜单。

于 2012-06-27T01:49:17.503 回答
0

是的,我认为这没关系,如果您需要基于某些内容返回页面的不同策略。您对问题的描述往往使我相信您使问题过于复杂。

于 2012-06-26T19:45:27.010 回答