2011-03-04 19 views
2

在庫システムでファサードパターンを使用する方法の例を教えてもらえますか?私の在庫は私がただの実装にいくつかの単純なクラスを必要とするコードを書くために誰かを求めていないです..私は秩序と配信にチェックするための国家クラスを記述しなかった在庫用ファサードデザインパターン

コーヒー、バングルス、ピザ

です。

私はちょうど

がインベントリにファサードを使用するには、この音は、合理的なん..在庫の注文の在庫が低いかどうかを確認、在庫確認、追加、削除、手持ちの在庫することができるようにしたいですか?

productFacade Interface class 

inventory class 
bagel class implements inventory(adding,deleting, stock on hand) 
pizza class implement inventory 
coffee class implements inventory 

ファサードパターンを使用することは妥当ですか?

orderfacade 

order class(create order) 
address class(for delivery of pizza, bagel,etc) 
orderline 
basket item 

私のプログラムにファサードパターンを強制しようとしています。 私のプログラムは、すでにピザを作成するための抽象的なファクトリを使用しています。コーヒーとベーグルの調味料のデコレータ。

+1

この 'java'と' C++'にタグを付けて、デザインパターンについて質問するのは単なる意味です。 : – James

+0

Fascadeパターンは単なるサブシステムなので、あなたがプログラムを使いたいと思っているのではないかと想像してください。どのような機能を使って実装が使えるようにして、それがどのように機能するかを知る必要はありません。 – Spidy

+0

@ジェームスあなたのためにそれを修正しました。 –

答えて

1

あなたがコーヒーを飲むために何をする必要があるか考えてみてください。あなたのファサードには、あなたが

+ Coffee order (Size size) 

のようなものを持っているでしょうし、内部的にあなたが一般的で

order (Size size) 
{ 
    grindBeans (size) 
    installFilter() 
    getCup... 
etc, etc 
    return coffee 
} 

のようなものを持っているでしょう、ファサードは、オブジェクトを使用して対話を簡素化します。

6

ファサードの主な目的は、複雑なサブシステムまたはオブジェクト/インターフェイスのセットをより簡単なものにまとめることです。基本的には、クライアントは、実装の詳細や必要なすべての依存関係を把握する必要がなくなり、クライアントのサブシステムに作業を委任します。ファサードは、サブシステム自体の特定の部分が複雑すぎる場合、他のファサードを覆うことさえできます。

アレックスが述べたように、物事を考える良い方法は、あなたがクライアントであるとふりをすることです。あなたは店に行き、ベーグルとコーヒーを注文する。あなたが懸念している限り、ウェイター(ファサード)に大きなダブルダブルとハーブとガーリッククリームチーズのベーグルを頼む必要があります。ウェイターは、コーヒーを作る、コーヒーを注ぐ、ベーグを焼く、クリームチーズを広げるなどの詳細を世話します。あなたはトースターもファサードと考えることができます。ウェイターは、ベーグルを入れてスライダーを押し下げるだけです。彼は、コイルを加熱してベーグルを焼くために、トースターが電流をどのように変換するかを知る必要はない。

注文ロジックを便利なステップに分割して、クライアントがファサードがクライアントに対して行うことができないことを知る必要がない実装の詳細をカプセル化するか、または他のものに委譲します。

希望に役立ちます。私はドアの外に出ていますので、コードサンプルの時間がありません。質問がまだ良い答えで読み込まれていない場合は、おそらく今夜後に。

+1

+1(例:ダブルダブル) – spbots