2017-07-26 15 views
0

私は自分の例を書いてパターンを勉強しています。しかし、時には、私は4つの店舗を持っている異種ソースのインターフェイスを作成する

...捕まってしまった:

Store1:肉、アイスクリームやトイレットペーパー。

ストア2:アイスクリーム。

ストア3:肉。

ストア4:アイスクリーム、パスタ、野菜。

時々、私はすべての店舗の肉が欲しいです。

場合によってはすべての店舗のアイスクリームのみです。

場合によっては、単一店舗のアイスクリームのみです。

インターフェイスは、すべてのクラスですべてのメソッドが実装されるとは限りません。 Store2にはStore2に肉がないので、get_ice_creamはありません

インターフェイスの分離が「インターフェイスの爆発」につながる可能性があります。

一方、複数の継承はほとんどの場合、悪い決定であると言われています。

私はその問題に対処しようとしています。

新しい店舗を追加し、私のアイスクリーム具象クラスは、単に同じget_ice_cream方法を実行ストアオブジェクトのリストからすべてのアイスクリームを得ることができるようにする方法を持っていることは非常にいいだろう。

ありがとうございました。

+0

構図を考えています。製品Aを提供する店舗は、製品リストにあります。ある事例で「何か」をしようとするには、実際にアプリケーションコードが必要です。 – Fuhrmanator

答えて

0

各タイプのストアを提供するストアファクトリを作成します。
これらの店舗は、これらすべてのメソッドを定義しgeneralStore抽象クラスから継承し、各店舗で:)

が実際に存在するものを上書きして、製品を求めたとき、のtry/catchを使用するものは何でもproductNotFoundExceptionかを返す必要があります。

すべての製品は、オーバーライドする前にすべてのgetterがnullを返す製品を返すような一般的な製品から継承することもできます。

+1

良い解決策のように見えます。私はそれをテストするつもりです。ご提案いただきありがとうございます! –

関連する問題