2011-01-30 39 views
3

我在接受採訪時被問到接口問題。我不確定這是否真的有可能。請看下面的問題。接口及其可訪問性

有3個接口A,BC。從接口BCA繼承:

public interface A : B,C 
{ 

} 

我們必須確保該接口的用戶無法使用BC直接或獨立,只有A使用。

我能想到的以下情況:

  1. BC內部接口。但我沒有看到任何實際用途,因爲我可以直接定義A本身的所有成員。
  2. 使BC專用接口。但我怎麼能做到這一點?另外,我在下面的MSDN鏈接中看到BC必須至少與A:http://msdn.microsoft.com/en-us/library/aa664578%28v=VS.71%29.aspx一樣可訪問。

有沒有辦法做到這一點,或者是問題本身是錯誤的?

回答

5

您要求的內容將違反Liskov Substitution Principle

如果A採用B這種方式,它應該始終可以直接用作B。試圖阻止這將違反面向對象設計的主要規則之一。

我懷疑面試官是否想知道你是否理解了這個核心概念,並且從一開始就會說「這是錯誤的,因爲......」。

+0

感謝您對此的看法。是否有任何好書或在線文章談論更好的設計原則 – sveerap 2011-01-30 06:15:14

1

對我來說這似乎是一個不好的設計模式,從一開始。如果您要求用戶繼承BC,那麼創建一個接口更合理。其次,BC必須至少與A一樣可用。(如果A是公開的,則不能將它們設爲內部或私有)。

我認爲唯一的真正的解決方案是將接口定義合併到A中,而不是三個分開。

+0

我也有類似的意見 – sveerap 2011-01-30 06:12:57

0

我們必須確保的 這個接口用戶就不能使用B和C 直接或獨立並有 只使用A.

你並不需要遮掩乙或C強迫某人只使用A,無論您使用B或C,並且只想等待A,請將其更改爲A.

希望它有幫助!