我正在使用页面对象模式对我的 Web 应用程序交互进行建模。应用程序中的大多数页面都有一些标准选项,如“登录”、“注销”、“主页”等。此外,它们都有受保护的 WebDriver 引用。
所以我创建了一个所有页面都会继承的超超类——GrandpaClass。这将只包含一个受保护的 WebDriver 引用和一个用于初始化驱动程序的构造函数。
然后我创建了一个大多数页面都会继承的超类——PapaClass。它继承了GrandpaClass并添加了我上面列出的标准菜单功能(登录等)
当相同的菜单操作可能导致显示不同的页面时,就会出现问题。例如,当您注销时,您可以转到登录页面,也可以返回错误页面。但是由于登录功能在PapaClass中,这个类必须返回从他继承的不同页面。这使得超类依赖于它的子类。
我正在考虑使用诸如Strategy之类的东西来分解常见的菜单功能。所以PapaClass不会维护功能,只会维护对Menu对象的引用。
这是一个好主意,还是有更优雅(或更简单)的方法来解决这个问题?
谢谢。