我只是最近纔開始專業開發。我在大學期間學習了OOP,但不覺得我真的曾經在真實世界中使用它。現在我應該使用抽象基類來達到這個目的嗎?
基本上,在試圖在組織內創建/操縱特定類型的文檔時,我爲它創建了一個類,並且認爲只要我們想要創建/操作該特定類型的文檔,就可以創建一個它的實例,並給它一定的信息,讓它自己照顧。我知道我們正在計劃與其他類型的文件(我想我應該注意到,當我說文件類型,我的意思是類似於「費用報告」或「庫存清單」,如我在)我認爲所有這些類型的文檔都會共享某些功能(例如,在Excel中使用共享字符串或定義的名稱),所以我創建了一個抽象的Document類,並且認爲每種類型我們想創建的文檔可以擴展這個類。
當然,我仍然只使用一種類型的文檔,所以雖然我對所有文檔可能都有的方法有了一個概念,但我仍然只有一個抽象類和一個擴展它,所以它似乎有點不必要。
我想我的問題是:
1)我應該甚至在這裏使用抽象類。像這似乎是適當使用一個或我完全錯過了這一點?
2)如果我應該使用一個,我應該早點使用它嗎?我的意思是,我是否應該等到實際上在我面前有幾個文檔,才能真正確定它們之間共享什麼樣的功能,而不是假設我現在知道即使我只有一個類實現它?
謝謝。
我將在這裏給出答案,以幫助我確認在理論上,抽象是正確的方法(如果我將有更多的派生類),但也強調良好的編碼實踐(YAGNI)。 我也很欣賞jlafay對Adeel的迴應的評論,即儘早編寫一個基類會是有益的,說實話,我很確定它會有更多的派生類。儘管如此,即使作爲一名新開發人員,我也應該知道,在企業界,即使我「確定」,也需要更多,但這並不一定意味着它會以這種方式結束。 – 2010-07-23 19:36:06