2013-06-25 254 views
2

這確實是一個高層次的最佳實踐問題,但我懷疑我使用的語言可能會影響答案(無構造函數)。輔助接口使用主要接口屬性 - VBA/VB6

利用類的主要屬性來處理輔助接口方法很常見嗎? 或者換句話說,二級實現可以知道類的內部狀態和屬性嗎?

即..

Class MyClass 
Implements MyInterface 

Private m_MyState as String 

Private Sub MyInterface_DoSecondaryStuff 

    Debug.Print m_MyState 

End Sub 

很抱歉,如果這是一個noob問題,但我沒有編程或經常創建輔助接口的機會。

+2

也許是一個壞榜樣,但你必須設想一些我想的東西。我沒有看到這樣做的任何問題,並且在很多情況下,您別無選擇,否則實現的界面的成員無論如何都變得毫無意義。幾乎沒有階級是無國籍的。 – Bob77

+0

謝謝,鮑勃。我最關心的是使用未初始化的屬性。由於VBA不提供構造函數,我想我會使所需的屬性爲只讀,並使用init方法設置它們。 – wesmantooth

+1

有一種方法可以完成構造函數方法的工作,您可以創建一個類工廠類,您可以調用該類來創建目標類的實例。類工廠調用目標類的Friend方法進行初始化。 – Bob77

回答

1

是的,這絕對沒問題。例外情況是,如果「二次執行」作爲一個獨立的類別會更好。

+0

好的,謝謝Mark,我也很欣賞這個附加提示。在這種情況下,我使用接口來實現多態。但在試圖確定接口是否有保證時,請記住這一指導原則。 – wesmantooth