我正在使用Page Object模式为我的Web应用程序交互建模。 应用程序中的大多数页面都有一些标准选项,如“登录”,“注销”,“主页”等。 此外,它们都有受保护的WebDriver引用。
所以我创建了一个超级超类,所有页面将继承 - GrandpaClass 。这将只包含受保护的WebDriver引用和初始化驱动程序的构造函数。
然后我创建了一个超级类大多数页面将继承 - PapaClass 。它继承了 GrandpaClass 并添加了我上面列出的标准菜单功能(登录等)
当相同的菜单操作可能导致显示不同的页面时,会出现问题。例如,当您注销时,您可以转到登录页面,也可以返回错误页面。但由于登录功能在 PapaClass 中,因此该类必须返回不同的页面,从他继承。这使得超类依赖于它的子类。
我正在考虑使用策略之类的东西来分解常用菜单功能。所以 PapaClass ,而不是维护功能,只会保留对菜单对象的引用。
这是一个好主意,还是有更优雅(或更简单)的方法来解决这个问题?
感谢。
答案 0 :(得分:2)
我认为您的Menu对象是个好主意,但您不需要 PapaClass 。您可以将所有页面都从 GrandpaClass 继承,并使用Composition这里有共同的元素。继承你说'是一个带菜单的页面',这表明页面应该只有一个菜单。
答案 1 :(得分:0)
是的,我认为这是可以的,如果你需要一个不同的策略来返回基于某些东西的页面。您对问题的描述往往会让我相信您的问题过于复杂。