【问题标题】:How to Handle 'Sometimes' Inheritance?如何处理“有时”的继承?
【发布时间】:2009-03-31 16:16:47
【问题描述】:

我有一种利用类表继承的情况,其中基础对象(抽象的)由对象的特定类型扩展。

例如,人 --> 用户 --> 潜在客户

但是,在某些情况下,例如 Prospect,有时它会扩展 User,有时则不会。我无法扭转这种关系,因为 User !== Prospect 所以我想知道如何最好地处理这些对象有时会扩展而有时不会扩展的场景。

另外,我知道在这种情况下有人会建议组合而不是继承,但这确实不可行,因为我依赖于扩展父功能和填充成员属性的能力,以便以完全相同的方式访问所有属性方式。

【问题讨论】:

    标签: php zend-framework oop domain-driven-design orm


    【解决方案1】:

    我闻到Decorator Pattern

    【讨论】:

    • 伟大的网站链接。语言特定的奖励。
    【解决方案2】:

    数据库中的继承通常意味着子表的primary_key是父表的primary_key的foreign_key。
    但你提到孩子可能是孤儿。在这种情况下,父级是一个可选关系。 (一般通过组合来解决)

    您可以创建两个类,一个扩展 User,一个不扩展。

    (但这可能不适合您正在尝试做的事情)

    【讨论】:

    • 在这种情况下,每个孩子都有一个从基表继承的 person_id,但潜在客户可以从任一用户或仅从人员继承。
    • 啊,我知道你要去哪里了。如果一个 Propect 有一个用户,它应该从用户那里获得额外的属性和方法。嗯,棘手...
    【解决方案3】:

    关注Decorator Pattern 将是您最好的选择。不确定您使用的是什么语言,但这里是 .NET 实现的另一个链接。

    http://www.dofactory.com/Patterns/PatternDecorator.aspx

    【讨论】:

      猜你喜欢
      • 2012-04-12
      • 2016-07-15
      • 1970-01-01
      • 2014-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-07
      • 2023-03-16
      相关资源
      最近更新 更多