[英]Class construction based on interface implementation
想象一下,我们有这样的类:
public abstract class WebPage
{
public WebPage()
{ ... }
}
public class LoginOrSignUpWebPage : WebPage, ILogin, ISignUp
{
private Info _loginInfo;
private Info _signUpInfo;
public readonly Info LoginInfo { get { return _meats; } }
public readonly Info SignUpInfo { get { return _legs; } }
public class LoginOrSignUpWebPage(Info loginInfo, Info signUpInfo) : base()
{ ... }
}
我们可以看到WebPage
希望根据其实现的不同接口采用不同的实例化方式。
虽然可以为每个类实现单独的构造是可以的,但我更喜欢使用继承将对象构造作为基础。 这样做的原因是因为另一个对象可能实现相同的接口,并且具有相同的实例化方式。
我已经考虑过使用某种(抽象的)工厂方法,但是我不确定这将如何工作。
题:
正确地说,您认为基于对象继承的接口来构造对象的最佳方法是什么? 这将包括(潜在地)不同的参数,并且至少取决于所实现的接口传递不同的数据。
我们可以看到
WebPage
希望根据其实现的不同接口采用不同的实例化方式。
不,他们不会。 接口定义类型在外部的外观。 它们没有提供实现细节,也没有提供有关构造函数或构造过程的信息。 如果您具有接口类型的对象,那么您所知道的就是您可以访问在接口中定义的属性和方法。
声明WebPage
类型的方法已固定为实现ILogin
和ISignUp
。 因此, 绝对需要实现这两个接口指定的任何内容。 WebPage
类型的每个对象将始终提供两个接口所需的内容。
仅仅因为您要实现的接口在编译时就已知道并且以后不能更改,就不必根据其实现的接口来构造对象。 因此,对于实现接口的类型,您只需直接指定其构造方式即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.