これは、最善の解決策を見つけるのに苦労し続けているものです。PHP と Java を使用しているときにこの問題が発生したので、OOP の問題の基本的な理解です。例は PHP です。
ここにいくつかのオブジェクトがあるとしましょう。曲、アーティスト、アーティスト プロフィール、ユーザー。
そのため、アーティスト (アーティストのプロフィール ページなど) を呼び出すときに、ArtistProfile とユーザー オブジェクト (サブスクライバー) の配列が必要な場合もあれば、曲のページを表示するときなど、アーティスト情報のみが必要な場合もあります。
あるオブジェクトを別のオブジェクトの一部としてネストする必要がありますか、それともさまざまな用途に合わせてより具体的なオブジェクトを作成する必要がありますか。
オプション 1: ネスト
Class Song {
private $songId;
private $songName;
private $year;
private $Artist; //Artist object
}
Class Artist {
private $artistId;
private $name;
private $age;
private $subscriberArr; //Array of User objects which then have more nested objects such as a Role object, Profile object
private $profile; //Profile object which could also have more nested objects
}
Class User {
private $userId;
private $name;
private $age;
private $role; //Role object
private $profile; //UserProfile object
}
オプション 2: より多くのオブジェクトを構築する
Class Song {
private $songId;
private $songName;
private $year;
private $artistId;
}
Class Artist {
private $artistId;
private $age;
private $name;
}
Class User {
private $userId;
private $name;
private $age;
private $roleId;
}
Class SongWithArtist {
private $song; //Basic Song object
private $artist; //Basic Artist object
}
Class ArtistWithProfile {
private $artist; //Basic artist object
private $profile; //Profile object
private $subscriberArr; //UserDisplay object containing basic User object
}
Class UserWithProfile {}
オプション 1 は、そのページには必要ないかもしれないが管理しやすい情報を取得するために多くの時間/リソースを浪費することを意味します。オプション 2 は厄介で、どのオブジェクトが何であるかを追跡する必要がありますが、db 呼び出しははるかに少なく、高速です。「正しい」選択肢はどれですか、および/または 3 つ目の正しい選択肢はありますか?