我一直在考虑拥有多个页面元素,并使用PageFactory进行制表。然后我意识到最好不要键入所有想要的类型,因为我只是想获取实例。 然后,我创建了如下内容:
public static T GetInstance<T>() where T:IPage, new()
{
return new T();
}
但是关键是,我可以像创建new WelcomePage();
这样的页面而不是PageFactory.GetInstance<WelcomePage>()
来创建页面,而使用这样的通用方法对我来说没有任何意义。但我看到它是以前使用过的东西。
因此,使用这种通用方法获取实例有什么好处。我很高兴听到可能的需求。
答案 0 :(得分:0)
鉴于这是静态方法,除了在其他通用方法中使用new
之外,我认为没有比GetInstance
更好的了。 (作为接口或抽象类的一部分的非静态工厂,具有超过1个实现,将更具意义,因为客户端将不依赖于特定工厂,或者例如,测试中可以使用与生产中不同的工厂)。
我希望使用new
,因为:
GetInstance
的实现细节GetInstance<T>
是泛型的,并且对泛型的构造函数约束仅限于无参数构造函数new ()
,这意味着依赖项将通过属性或周围环境注入到T
对象中,而不会这是理想的。通过构造函数进行依赖注入要好得多。