簡體   English   中英

我們是否應該總是定義接口和抽象類,即使只有一個擴展它們的類也是如此?

[英]should we always define interface and abstract classes, even when there will only be only 1 class extending them?

即使只有一類擴展它們,自己也應該總是定義接口和抽象類嗎? 我從事一些小型Java項目已有一段時間了。 我一直看到他們一直在創建抽象類並在他們正在編寫的所有其他類之間建立接口。 但是在幾乎所有其他情況下,接口僅由一個類實現,並且抽象類也僅由另一個類擴展。 這是因為沒有多個類的擴展或實現范圍。 因此,根據我的理解,如果我們知道會有很多其他的類會使用它,那么我們可以有接口和抽象類。 在上述情況下,我認為應該直接編寫具體的課程。 並且將來如果需要可以自己修改這些類並創建接口等並加以利用。 我以某種方式對自己對多態性用法的理解達不到標准的99%肯定。 請讓我知道這些概念的正確用法。

如果要使用多個抽象類和接口,則意味着它們。 如果您僅計划一個班級,則不需要任何一個。

如果以后需要兩個子類,則可以始終將原始類轉換為接口。

要記住的一件事是,編寫接口和抽象類是安全的。 如果已經知道該功能並且已經制作了骨架,則可以更輕松地測試您的類,並且可以防止錯誤。

如果您有幾個實現/擴展它的相似類,則接口和抽象類才有意義。 如果您當前只有一個子類,但是您知道可以在某個時候添加更多子類,那么它們也很有意義。

但是,如果您確切地知道永遠不會有其他類似的類,那么您就不應該使用它們。 那只會減慢程序速度。

如果要向“客戶端”提供API,則接口和單一實現可能很有意義

您要做的是先設計API (接口),然后將其提供給您的客戶端,而無需實施。 我看到兩個優點:

  • 您的客戶可以一邊工作,一邊了解API中的所有現有方法:您的團隊和客戶團隊之間的工作可以並行進行。
  • 您不必向他提供要保密的實施源。 可以在運行時在單獨的jar中提供實現。

另外,如果您要在要保留向后兼容性的系統上工作,我建議您盡快引入接口,以免以后被卡住。

否則 ,我建議您僅在需要接口時才引入接口,並依靠重構工具輕松更改代碼。 這將使您更容易理解。 其他開發人員將對此表示感謝。

干杯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM