gpt4 book ai didi

php - 对象集合 OOP

转载 作者:可可西里 更新时间:2023-11-01 01:09:30 25 4
gpt4 key购买 nike

我对一般概念感兴趣,您将如何在以下上下文中组织您的代码(您将使用哪些类)。

您必须处理文章/节点或内容。名称无关紧要,概念是相同的。每个对象有 10-20 个属性。

当我需要使用这些对象时,问题就出现了。为了保持代码整洁,我尝试将大部分操作移到一个或多个类中。

第一种方法是使用一个名为 NodeManger 的通用类。正如您可以想象的那样,这些方法越来越多,所以解决这个问题的唯一方法是开始将代码重构为几个具有特殊用途的较小类,如 NodeStorage、NodeConverter、NodeViewer、NodeBuilder 等。

你必须对这个集合做的操作在开始时似乎很少,但随着时间的推移它们会变得越来越大 - 你必须将节点存储在不同的数据库( CMS )中,每个数据库都有不同的命名结构 - 你必须从不同的表中提取信息 - 您可以通过 API 获得不同的输入,这些输入具有不同的属性名称,但最终它是同一个对象 - 您必须选择子集、提取、过滤、删除等。

所以问题是:我走在正确的轨道上吗?为了应对这些问题并对可能出现的新操作持开放态度,您会设计什么样的抽象结构?

最佳答案

请记住,HasA(包含)关系通常比 IsA(继承)关系更好:您的 NodeManager 类最好包含几个可以以各种方式作用于数据的其他对象,而不是所有扩展的对象扩展其他对象的对象......好吧,你明白了。听起来你已经在尝试这样设计了,所以我可能只是在向合唱团布道,但多重继承很快就会失控,所以值得重复。

话虽如此,有时您无法摆脱继承,您正在寻找的大部分功能可能都可以通过抽象类实现:创建您需要的功能的抽象 stub ,然后在每个不同案例的按需基础,这样您就不必在代码中明确跟踪它(例如,您提到了具有不同命名约定的不同数据库连接)。

关于php - 对象集合 OOP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4401583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com