为异构源创建接口

Create an interface for heterogeneous sources

我正在研究模式并编写自己的示例。但有时我会卡住...

我有四家店:

Store1:肉类、冰淇淋和卫生纸。

Store2:冰淇淋。

Store3:肉

Store4:冰淇淋、意大利面、蔬菜。

有时我想要所有商店的肉。

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

有时只有一家商店的冰淇淋。

我应该如何为那些 class 设计一个 接口 考虑到并非每个方法都会在每个 class 中实现?我的意思是,Store2 没有 get_ice_cream,因为 Store2 没有肉。

接口隔离可能导致 "interface explosion"。

另一方面...人们说在大多数情况下多重继承是一个错误的决定。

我无法解决这个问题。

如果有一种方法可以添加新商店并使我的 IceCream 具体 class 能够从列表中获取所有冰淇淋,那就太好了Store 对象简单地执行相同的 get_ice_cream 方法。

感谢您的帮助?

创建一个商店工厂,为您提供每种类型的商店。
这些商店应该继承自定义所有这些方法的 generalStore 抽象 class 和 return 一个 productNotFoundException 或其他什么:)

在每个商店中覆盖实际存在的内容,并在询问产品时使用 try/catch。

您还可以让所有产品继承自一般产品,该产品return是一种在覆盖之前所有 getter return 为空的产品。