簡體   English   中英

派生或注入

[英]Derive or Inject

最近,我正在破解一些代碼以與外部Web API通信。 Web API是一組返回Xml的GET / POST操作,該操作通過HttpWebRequest從我的應用程序中調用,並使用Linq to Xml在我這一邊進行操作。

api方法的邏輯分組構成了多種服務。 我創建了代表這些服務中的每一個的類。 每個服務必須通過相同的響應頭集聯系相同的基本uri和基本。 也就是說,在我所有的服務類之間共享一系列方法。 我對這些通用方法執行了提取方法以進行超類重構,並從新的超類繼承了我的所有服務類。 重構中涉及的所有方法都涉及配置與遠程api的基礎連接以及處理返回的原始數據,例如將xml反序列化為POCO。

我剛剛被問到為什么我要使用繼承來使用基類中的方法而不是將其注入。坦率地說,我沒有真正好的回答,所以我想理解為什么問這個問題以及它的優點是什么。注入繼承。 我知道基本的OO設計原則說,我們應該偏重於繼承而不是繼承,並且我可以看到如何重構組合,但是我不確定這將為我帶來什么好處。

我的同事說:“不僅測試性更高……而且更容易測試”。 我可以看到他的論點,但我想了解更多。 希望我能提供足夠的信息以得到明智的答復。

這取決於 :)

如果您的子類在基礎類上提供了特殊化,則這有利於繼承,而如果基礎類提供了更多的效用函數,那么我將使用組合。

如果您的子類只是將POCO調整為適合網絡調用所需的格式,則繼承可以成為一種方式,但是與大多數事情一樣,軟件開發可以用很多方法來解決。

注入它可以使您隔離地測試注入的代碼,而無需繼承即可在子類中僅測試通用代碼的繼承。

希望我能夠提供幫助

暫無
暫無

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

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