【问题标题】:Better architecture for multiple inheritance更好的多重继承架构
【发布时间】:2017-11-26 02:28:09
【问题描述】:

我在github 上创建了一个在PHP 中实现指纹算法的项目。我的想法是拥有parent basic fingerprint implementation,并且该类可以通过其他更具体的类进行扩展,例如CityCompany、Title 和Street。所有这些类都有特定的同义词和删除(例如停用词),但功能与基类相同。 在这一点上,所有这些看起来都很好。

现在,我还有第二个项目,也在 github 上,它正在为 Elasticsearch 索引创建分析器、过滤器和同义词。它还有parent basic class,应该由其他更具体的类扩展,如CityCompany、Title 和Street。这就是问题所在,对于每个特定的类,我想分别重用之前项目中定义的同义词。

现在在 github 上看到的版本更多的是伪代码,因为特征不能以这种方式工作(不允许覆盖属性),但这就是我想要实现的想法,拥有共同的属性并在项目之间共享它们.


编辑:更新了链接,使其与项目的当前状态相匹配。完全移除特征。现在使用依赖注入并为两个项目添加了一些测试。

【问题讨论】:

    标签: php architecture


    【解决方案1】:

    问题源于您在不需要继承的情况下使用继承的冲动。 BaseFP 应该作为依赖注入到您的 CityCompanyTitleStreet 类中。

    然后您就可以将其提取为单独的作曲家包并重复使用。

    组合优于继承

    【讨论】:

    • 是的,我同意。实际上,在阅读此评论之前,我进行了一些重构以使用依赖注入。你愿意看看更新吗?我还添加了一些基本测试来评估正确使用情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-12
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    相关资源
    最近更新 更多