我剛纔讀過的an article,說一個例子:子類耦合和.NET
子類耦合。當一個基類型(通常是類)有一些擴展它的派生類型時,其他類型理想情況下應該只知道基類型。如果所有的子類型共享相同的公共接口(從基類型繼承的公共成員,爲每個子類中的不同行爲而被覆蓋),那麼外部的「客戶端」類型可以將它們全部視爲基類。如果不是這樣,如果客戶端類型知道存在的子類型的細節,那麼這是與有問題的多態結構耦合的子類。
具體而言,最後一行表示「如果客戶端類型知道存在的子類型的詳細信息...」。在.NET中,如果我使用WebRequest.Create("ftp://...");
,那麼我知道將返回一個FtpWebRequest
,並且我可以更改FtpWebRequest
子類特有的屬性,例如UseBinary
屬性。除非我有關於WebRequest的子類型的具體知識,否則我無法做到這一點,所以在我看來,這是子類耦合的情況,並且是不好的設計。
我很難相信這是代表.NET框架開發人員的糟糕設計,而是想象我對上述內容的理解有些過時。有人能夠解釋爲什麼我在.NET中提供的示例不是子類耦合的示例嗎?