基于接口实现的类构造

时间:2014-03-16 14:16:25

标签: c# interface instantiation

想象一下,我们有这样的课程:

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想要根据它们实现的不同接口有不同的实例化方法。

虽然为每个类实现单独的构造感觉还可以,但我更愿意使用继承来构建对象构造。这样做的原因是因为另一个对象可能实现相同的接口,并且具有相同的实例化方式 我曾考虑使用某种(抽象的)工厂方法,但我不确定这是如何工作的。

问题:

正确的观点是,您认为根据它继承的接口构建对象的最佳方法是什么?这将包括(可能)不同的参数,并且至少根据实现的接口传递不同的数据。

1 个答案:

答案 0 :(得分:1)

  

我们可以看到WebPage想要根据它们实现的不同接口有不同的实例化方法。

不,他们不会。接口定义了类型对外部的外观。它们不提供实现细节,也不提供有关构造函数或构造过程的信息。如果你有一个接口类型的对象,你只知道你可以访问界面中定义的属性和方法。

您声明WebPage类型的方式是已修复以实现ILoginISignUp。因此,绝对需要来实现这两个接口指定的任何内容。并且WebPage类型的每个对象将始终提供两个接口所需的内容。

没有必要根据它实现的接口构建对象,因为您实现的接口在编译时是已知的,以后不能更改。因此,对于实现接口的类型,您只需直接指定它的构造方式。