2009-03-19 7 views
0

内部のメールシステムに似たアプリケーションを設計する必要があります。しかし、これは単なるコースプロジェクトです。ネットワーキングは必要ありません。教授は議論されたデータ構造を働かせるだけです。しかし、私はアプリケーションの設計方法を決めるのが難しかった。私が何をしなければならないかを簡単に説明し、私の考えを分かち合うつもりです。デザインパターンの選択

これはコマンドラインベースのアプリケーションであることがわかっているといいと思います。 GUIは関係ありません。

内部メールシステムは、5つの可能な状態で構成されています。一般、管理者、ユーザー、モデレーター、および作成します。一度に1つの状態にすることは可能です。アプリケーションが起動すると、デフォルトでGeneral状態になります。この状態で唯一可能なコマンドは、他のアカウント(User、Admin、Mod)にログインすることです。ユーザーは、自分のメッセージを読む、新しいものを他のユーザーに送信する(作成する)、メッセージを削除する、ログアウトする、さらにカップル。ユーザーは、ComposeまたはGeneralの2つの状態のいずれかに変更できます。 Compose状態にするには、ユーザーはcomposeコマンドを使用する必要があります。この状態では、他のユーザーにメッセージを作成します。メッセージの作成が終了すると、ユーザー状態に戻ります。ユーザーが一般に戻ることができる唯一の方法は、ログアウトすることです。

Admin(Userの動作を継承します)とModはほとんど同じです。彼らも州を変えることができます。ここで

は、私がデザインパターンに新たなんだ状態

General |----->Admin 
     | |---->User(limited) 
     | |---->Compose 
     | 
     |----->Moderator 
     | 
     |----->User 
     | |---->Compose 

を変更することが可能であるかの概要です。最近私は彼らについて多くのことを読んできました。しかし、これを実装するのは初めてです。私の提案の一つが奇妙に思えるなら、私に知らせてください。

ステートパターンは素晴らしいアイデアのようです。私はオブジェクトの状態を動的に変更できます。しかし、すべての州に同じ方法があるわけではありません。管理者には、ユーザーよりも多くの方法があります。管理者には、管理者またはユーザーのいずれの方法もありません。あなたはGeneralを使ってログインすることしかできません。私はこれがState Patternを使用する能力を制限すると思います。あなたは他のパターンについて何か提案していますか?

私が持っていたもう一つのアイデアは、次のようなものでした。私は州を昇降することができるので、私はスタックとして見ることができます。たとえば、作成モードのユーザーなどです。

\  / 
| Compose | <---- top (current state) 
| User | 
| General | 
----------- 

これを実装する方法についてご意見はありますか?それも可能ですか?私はJavaに最も慣れていますが、C++や擬似コードは問題ありません。

答えて

1

この素晴らしいデザインパターンは"Role object model"です。あなたが異なるコンテキストで重要な抽象化を扱いたいとあなたは同じクラスのインターフェイスに結果のコンテキスト固有のインタフェースを入れたくない

  • :それは文脈で適用することができます。
  • 利用可能なロールを、コンパイル時に静的に固定するのではなく、実行時に というオンデマンドで接続および削除できるように動的に処理する必要があります。
  • 拡張機能を透過的に扱いたいので、結果の オブジェクトコングロマリットの論理オブジェクトIDを保持する必要があります。
  • 役割の変更がその役割に関心のないクライアント に影響しないように、役割とクライアントのペアを互いに独立させておく必要があります。 (ここでは:あなたのユーザー)コンポーネント:そのessencially役割とコンポーネントの役割役割の特定の能力を提供しを管理コンポーネントコアのconcists

そのパターンは、3つの要素を使用していました。 管理者ユーザーモデレーターなどがあなたのコンテキストでの役割です。

+0

もし私が知っているのであれば、これを実装している現代のサンプルコードが理想的にはC#で好きです!前にこれを実装しましたか?乾杯 – Berryl

1

私はあなたが区別しなければならない2つの側面が混合されていると思います。..

ユーザー管理司会役割、しばらく一般LogedIn作曲ですです。だから、の状態のロールのデザインパターンをまとめておくべきだと思います。

関連する問題