2015-10-13 22 views
16

ライブ通知システム(fb、xing、twitter ..など)を実装しようとしています。したがって、エンティティを構築する前にUMLクラス図を作成しました。ライブ通知UMLクラス図


EDIT:ショーケースには、次のようである私は、このアプローチについて考え、これが正しいものではありませんかのように思えます。次のシナリオを見てみましょう:ユーザーUは、イベントEの画像IにコメントCを追加します。これを正しく保存するには、EventNotificationにはイベントEの参照のみがあり、IとCの参照はありません。 "EventImageNotification"クラスも同様ですが、これは混乱します。 1つの「通知」ク​​ラスを持ち、それに関連するすべてのフィールドへの参照を格納する「メタデータ」フィールドを追加するほうがよいでしょうか?


(私は後で関係を実装するために、ORマッパーを使用しています)。

[1] 1人のユーザーがイベントを作成できます。 "Silvester Party 2015" (OneToMany)。 このイベントにはダッシュボードがあり、作成者がそのイベント(ManyToMany)に何かを投稿すると、ユーザーは更新を受信するために登録できます。

[2]ユーザーがイベントのダッシュボードに何かを投稿すると、購読しているユーザーは通知を受け取る必要があります。したがって、私はEventNotificationクラスを作成しました。ユーザーとEventNotificationの関係はManyToManyです。

[3]私は、きれいに保つため、通知タイプに関連するAbstractNotificationクラスを作成しました。通知タイプは、name = "EventPost"とtemplate = "ユーザーユーザーがイベント__eventに新しいものを投稿しました"のようなものです。

[4]抽象クラスNotificationConnectorは、EventNotificationとUser(UserEventNotification)の間のマッピングクラスにフィールドを与えます。私は将来、簡単に拡張するためにそれらを作成しました。ユーザーは、イベントなどをトリガするブックを作成することができます。次に、この新しいエンティティの通知を保存するために、1つの "BookNotification"と1つの "UserBookNotification"クラスを作成する必要があります。

このアプローチは良い方法ですか、完全にうんざりですか?この図についてのあなたのアイデアを教えてください:

(アソシエーションを構築するための矢印は通常の線でなければなりません。

Notification UML

+0

更新:現在、メタデータフィールドをNotificationTypeと組み合わせて使用​​しています。すべての種類のネストされた通知に対応しています。 – user3746259

答えて

0

ちょうど少数の観測:

  • 2つの抽象クラスが一つだけのコンテキストでそれらを使用するので余分であるように見えます。
  • Userからの接続hasは、抽象クラス(とにかくドロップすることをお勧めします)ではなく、UserEndNotificationに行かなければなりません。
  • 私はむしろ、私はUserEvent間の関連クラスを使用してisOwnerisSubscriberプロパティを追加しますowns関係を使用するよりも<<enumeration>>
  • NotificationTypeを作ると思います。
+0

こんにちはトーマス、あなたの考えに感謝します。私はあなたのポイントをコメントします。 [1]抽象クラスを作成しました。将来、抽象クラスに接続するエンティティが増えるためです。 [2]これはより論理的に聞こえる! [3]これも読んでくださいが、その後、管理領域を通して名前とプレートを管理することは難しいでしょうか? [4]これはかなりいいと思いますが、私はそれも考えましたが、推薦された/もっとパフォーマンスの良い方法が何であるかは分かりませんでした。通常は、2つのクラス間に複数の別個のリレーションを持つことができますが、両方のアプローチが機能するはずです。 – user3746259

+0

3)は異なります。長所と短所があります。ちょっとした考え。 4)パフォーマンスについては教えません。これは実装に委ねられています。あなたのm-n関係は、すでに2つの外部キーを持つテーブルを介してマップする可能性のある関連クラス(単純なものですが)です。 –