这是基本前提,我正在为 db 对象使用活动记录模式,我认为我需要一些指导来组织这些类。而且总的来说,我如何可能拆分我的班级结构。希望我不要解释得太糟糕。如果组合模式是要走的路,我可能需要一点手来实现它。
假设有一个ActiveRecord
基类,位于图腾柱的底部,用于处理将对象映射到数据库以及将数据库映射到对象。
的子类ActiveRecord
是一种通用User
类,它处理用户会话、登录、保存时密码字段的加密等。
另一个孩子ActiveRecord
是一个ActiveRecordButSlightlyMoreAdvanced
班级。通常这个类与 无关User
,但这是我的问题。
我想要一个子类,它本质上是User
and的组合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
{
:( :( :(
}
我已经考虑这个问题大约一个月了,如果其中一个对象实现保存的方式发生变化,我想不出一个不会给对象双重维护带来负担的解决方案。在接下来的几天里,我将尝试一些解决方案,并可能发布我认为在这种情况下最好的解决方案。