基本的な前提は次のとおりです。私は db オブジェクトにアクティブ レコード パターンを使用しています。これらのクラスを編成する方法について何らかの方向性が必要だと思います。また、一般的に、クラス構造を潜在的に分割する方法についても説明します。うまくいけば、私はこれをあまりひどく説明しません。構成パターンが進むべき道である場合、それを実装する方法について少し手を握る必要があるかもしれません。
ActiveRecordトーテム ポールの下部に、オブジェクトを db にマッピングし、db をオブジェクトにマッピングする基本クラスがあるとします。
の子ActiveRecordは一種のジェネリックUserクラスであり、ユーザー セッション、ログイン、保存時のパスワード フィールドの暗号化などを処理します。
の別の子ActiveRecordはActiveRecordButSlightlyMoreAdvancedクラスです。通常、このクラスは とは何の関係もありませんUserが、ここに私の問題があります。
User基本的に と の組み合わせになりたいサブクラスが必要ActiveRecordButSlightlyMoreAdvancedです。UserButSlightlyMoreAdvancedからすべてのメソッドをコピーして貼り付ける必要はありませんUser。Userを拡張するActiveRecordButSlightlyMoreAdvancedのは意味がありませんUser. UserButSlightlyMoreAdvancedを拡張するのは理にかなってActiveRecordButSlightlyMoreAdvancedいますが、 からたくさんのメソッドをコピーして貼り付ける必要がありますUser。
写真の方がよく考える人もいると思いますので、ここに構造を示します。
ベース
class ActiveRecord
{
....
}
子
class User extends ActiveRecord
{
....
}
また子供
class ActiveRecordButSlightlyMoreAdvanced extends ActiveRecord
{
....
}
問題
class UserButSlightlyMoreAdvanced extends User AND ActiveRecordButSlightlyMoreAdvanced
{
:( :( :(
}
私はこの問題について約1か月考えてきましたが、オブジェクトの1つが保存を実装する方法に変更があった場合、オブジェクトを二重に維持する負担を負わない解決策は考えられません。今後数日間でいくつかの解決策を試し、この状況で最善と思われるものを投稿する予定です。