繁体   English   中英

基于接口实现的类构造

[英]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类型的方法已固定为实现ILoginISignUp 因此, 绝对需要实现这两个接口指定的任何内容。 WebPage类型的每个对象将始终提供两个接口所需的内容。

仅仅因为您要实现的接口在编译时就已知道并且以后不能更改,就不必根据其实现的接口来构造对象。 因此,对于实现接口的类型,您只需直接指定其构造方式即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM