2017-02-09 76 views
4

所以我在一個情況下,我想有一個包含類的對象的數據庫運行。它看起來像這樣:沒有反思是否有可能確定類運行

id | Description  | pricingClass 
1 | "static pricing" | staticDeliveryPrice.class 
2 | "Dynamic pricing" | dynamicDeliveryPrice.class 

這樣做的目的是爲了讓我的編碼具有靈活性。我的思路是,這將允許多種方式來確定如何計算deliveryMethod的價格。

我擔心的問題是,在這種情況下反射不好使用?有沒有更好的方法來做到這一點?它是遵循堅實的原則嗎(我會說是,但我的一部分不同意)。

+1

爲什麼不創建一個基本的DeliveryPrice類,並讓DynamicDeliveryPrice和StaticDeliveryPrice類擴展它來實現它們自己的傳遞方法。那麼你所需要的就是一個包含你調用相同方法的DeliveryPrice對象的數據結構。爲什麼所有將對象類型映射到字符串/類的工作? –

+1

反思不錯。如果您需要它,請使用它。 – ZhongYu

+0

@RAZ_Muh_Taz我的計劃是讓我所有的deliveryClass使用一個接口來預定義方法。但是,我仍然需要我的價格對象來確定它使用什麼deliveryPrice? – Harry

回答

7

您正在描述基於插件的體系結構。你真的需要這種靈活性嗎?它通常是在必要的時候:

  • 你的項目需要新的功能添加到您的代碼,而無需干預要允許運行修改程序的

否則,這是完全矯枉過正。您可以完全控制產品中的內容,因此您可以簡單地依靠良好的舊式多態來隔離功能的不同實現。另外,將業務邏輯放入數據庫並不是一件好事:混合關注點,創建強耦合(突然重命名類會變得令人討厭!),當然,更難以推斷出發生了什麼你的代碼只是看着它而已。

+0

感謝您的反饋。我很高興你寫了爲什麼它是必要的,因爲它確實證明我正在嘗試做什麼。在我的用戶場景中,我希望能夠在運行時更改交付方式,並允許其他「客戶」指定確切的成本計算以及程序如何與產品交互。 – Harry

相關問題