我正在使用mysql數據庫和java。我對裝飾器模式的理解是,它允許非常靈活的運行時,因爲您可以根據需要分配儘可能多的裝飾器,直到獲得所需對象的行爲或表示形式。我之前已經成功編寫了幾個裝飾器,現在我想將裝飾對象的狀態存儲到數據庫(最好是mysql)中。例如:在mysql數據庫表中反映裝飾模式
假設我正在爲一家咖啡店編碼系統,而我用於表示飲料成本的模型使用了一個裝飾器(即具體物件是濃咖啡,它可以用牛奶,糖,鞭子奶油,糖漿裝飾以及其他任何他們今天在咖啡中放入的東西)。此外,假設我目前還不能預測未來咖啡中有多少種不同的成分(也許有一天人們會想要咖啡豆中的糖豆,但我不會知道這一點)
現在我想記錄每次有人買飲料,並跟蹤使用的成分。設計我的數據庫模式的最佳方法是什麼,以便它能夠處理新的成分。我目前有兩個想法,這兩種想法似乎都不是正確的方法:
1)將飲料編碼爲json字符串,並將其轉儲到數據庫中,假設我的數據訪問對象可以處理此解碼。
2)嘗試預測飲料的所有可能的修改,併爲每個飲品製作專欄,每次有人想出新的飲料添加時,我都必須改變模式。
必須有比這兩者更好的方法。
修飾符模式旨在將*行爲*添加到類中。你的問題很簡單。只需將「裝飾品」作爲附加成分存儲在數據庫中,並根據需要將其添加到咖啡中。如果出現新成分,則可以將它們作爲新成分記錄添加到數據庫中。 –
使用兩張桌子:盤子(或更好的名字,如飲料)和配料可能? –
您需要「飲料」和「配料」之間的「多對多」關係。特定於*特定飲料(訂單ID,折扣或其他)的各種屬性可以被存儲爲關係的屬性。 –