2017-07-26 34 views
0

我正在學習編寫自己的例子的模式。但有時我被困...爲異構資源創建一個接口

我有四家門店:

商店1:肉類,冰淇淋和衛生紙。

Store2:冰淇淋。

Store3:肉。

Store4:冰淇淋,意大利麪,蔬菜。

有時候我想要所有商店的肉。

有時只有所有商店的冰淇淋。

有時只從一家商店購買冰淇淋。

我應該如何設計一個接口這些類考慮不是每個方法都會在每個類中實現?我的意思是,沒有get_ice_cream Store2因爲Store2中沒有肉

接口隔離可能導致「接口爆炸」。

另一方面......人們說在多數情況下多重繼承是一個糟糕的決定。

我一直在試圖解決這個問題。

這將是非常好的,有一個方法來添加新的商店,讓我冰淇淋具體類能夠從簡單執行相同get_ice_cream方法商店對象的列表得到所有的冰淇淋。

感謝您的幫助?

+0

我會考慮作文。提供產品A的商店將其列入其產品列表中。在示例中,您需要真正的一些應用程序代碼來嘗試「做些什麼」。 – Fuhrmanator

回答

0

創建一個商店工廠,爲您提供每種類型的商店。
這些商店應該從定義所有這些方法generalstore的抽象類繼承,並返回一個productNotFoundException或任何:)

在每家店覆蓋真實存在,並要求產品時,可以使用一個try/catch。

您也可以讓所有產品從一般產品繼承,該產品返回的產品在覆蓋之前返回null。

+1

看起來像一個很好的解決方案。我要去測試它。非常感謝您的建議! –