我刚刚读了一篇文章,上面写着:
子类耦合。当一个基类型(通常是类)有许多扩展它的派生类型时,理想情况下,其他类型应该只知道基类型。如果所有子类型共享相同的公共接口(从基类型继承的公共成员,为每个子类中的不同行为覆盖),那么外部“客户”类型可以将它们全部视为基类,就好像它们是基类一样。如果不是这样,如果客户端类型知道存在的子类型的细节,那么这就是子类耦合到所讨论的多态结构。
具体来说,最后一行说“如果客户端类型知道有关存在的子类型的详细信息......”。在 .NET 中,如果我使用WebRequest.Create("ftp://...");
则我知道FtpWebRequest
将返回 an,并且我可以更改特定于FtpWebRequest
子类的属性,例如UseBinary
属性。除非我对 WebRequest 的子类型有特定的了解,否则我将无法做到这一点,所以在我看来,这是一个子类耦合的情况,并且是糟糕的设计。
我很难相信这是代表 .NET 框架开发人员的糟糕设计,而是想象我对上述内容的理解有点偏离。有人能解释为什么我在 .NET 中提供的示例不是子类耦合的示例吗?