1

私は、ユーザーがさまざまなアクションの通知を送信するかどうかを指定できる、当社の通知システムを設計しています。

このデザイン パターンの名前は何だろうと思っているので、それを読んで、すべきこととすべきでないことに従うことができます。

ストーリー (要件): ユーザーがサイト (アプリ) でさまざまなアクションを実行すると、アクションが Facebook と Twitter のアカウントに投稿され、メールも送信されます。多くのアクションがあり、Facebook で 6 つ、Twitter で 6 つ、メールで 12 です。そのため、アクションごとに個別の列を作成することは意味がありません。特に、それらの値がデフォルトで true であるためです。

たとえば、ユーザーが私たちのウェブサイトの自分のページに新しい画像をアップロードするとき、Facebook や Twitter に投稿したいので、アプリに画像をアップロードするだけです。

これに対する私の設計は、これらの列 (行の例を含む) を持つ meta_data テーブルです。

id, user_id, namespace,  notification,   value 
0,  1,       'facebook', 'image_upload', false
1,  1,       'twitter',  'video_post',   false
2,  10,      'email',    'send_money',   false

また、すべてのアクションとその名前空間について、テーブルを作成するときにデフォルトでいくつかの行をデータベースに追加し、すべての値を true に設定します。次に、ユーザー設定ページで、デフォルトですべてチェックされているこれらの設定のチェックボックスを確認できます。ユーザーがチェックを外すたびに、そのユーザー、アクション、および名前空間の新しい行を作成し、値を false にします。

4

2 に答える 2

1

これはオブザーバーパターンと呼ばれます。

于 2012-07-03T03:56:47.610 に答える
0

私はPublish-subscribe pattern のようになりますが、それがあなたの助けになるとは思えません。

データ モデルについて: 3 つのテーブルを使用します。EventDefinition と ActionDefinition は非常に小さくする必要があるため、常にメモリ内に保持する必要があります。

EventDefinition id name 0 'あなたのアプリで何かをしました' 1 '他の何か' ...

ActionDefinition id 名前 0 'upload_image_tofacebook' 1 'send_email' 2 ...

イベントがいくつかのデータまたは変数を設定し、応答で実行されるアクションがそこから読み取ることができる、ある種の「コンテキスト」が必要です。

Subscription user_id event_id action_id 0 2 3 // user_id 0 に関連するイベント ID 2 が発生すると、アクション 3 を実行します

于 2012-07-04T03:27:39.850 に答える