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