0

私はまだデザインパターンに頭を悩ませようとしています.2回目は、パターンの解決策を求めているように見える同じ問題に直面しています.

複数のアカウント タイプを持つアカウント システムがあります。レストラン、ホテル、service_provider、および消費者のアカウント タイプがあります。将来的にはビジネス アカウントの種類が増えると確信しています。もちろん、グローバル管理者アカウントもあります。

そこで気になるのは、アカウント種別の切り替えをどう実装するかということです。例えば。各アカウントには 1 つ以上のプロファイルがありますが、プロファイルはアカウントの種類によって異なります。複数のタイプのアカウント (ポリモーフィズムまたは継承) を処理するには、ここでどのようなクラス関係を使用する必要がありますか?

他のプロファイルが拡張する必要がある抽象的な基本プロファイル クラスが必要なようですが、それを実装する方法がわかりません (たとえば、プロファイル タイプとアカウント タイプの間の結合テーブル?)。

また、ファクトリ パターンを実装する機会のようにも感じますが、どうすればよいかわかりません。

アイデアはありますか?

*

*

提案されたいくつかの例を提供するために編集されました:

Account -> hasMany   -> Users

Account -> belongsTo -> AccountType

Account -> hasOne    -> Profile

プロファイルはアカウントの種類によって異なります。たとえば、レストラン タイプのアカウントにはメニューやワイン リストなどがあり、ホテル タイプのアカウントには部屋のタイプやアメニティがあり、消費者タイプのアカウントには個人的な好みがあります。 、母国など

問題は、これらの関係を最もよく実装する設計パターンは何かということでした。

それがより明確であることを願っています、ありがとう!

4

2 に答える 2

1

ここでは、アカウントとプロファイルの間の関係については継承ではなく集約をお勧めしますが、複数のアカウント タイプに継承される Account 基本クラスがあります。

アカウントにはプロファイル オブジェクトが含まれており、これは各ポリモーフィック アカウント タイプのコンストラクターで設定できます。

アカウントの作成をファクトリ パターンまたは仮想コンストラクタ パターンでラップすることもできます。

于 2008-10-10T13:56:26.470 に答える
0

例に感謝します。あなたはこれをそれよりも難しくしようとしているかもしれません。次のように動作しますか?

User <<--> Account
Account <<--> AccountType
Account <--> Profile
Profile <<--> ProfileType

アカウントとプロファイルの1:1の関係について質問します。アカウントが複数のプロファイルで終わる可能性があるか、プロファイルがアカウントではなくユーザーに属している可能性がありますが、プロファイルが何であるかはよくわかりません。このコンテキストでis/does

于 2008-10-10T19:02:35.900 に答える