基本的な前提は次のとおりです。私は 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つが保存を実装する方法に変更があった場合、オブジェクトを二重に維持する負担を負わない解決策は考えられません。今後数日間でいくつかの解決策を試し、この状況で最善と思われるものを投稿する予定です。