我的python技能很差,所以我太无知了,无法在任何合理的时间写出我的想法。但是我确实知道如何进行OO分解。
为什么
Employees班上要做所有的工作?整体的Employees类可以执行几种类型的操作:
- 从文件读取和写入数据-aka序列化
- 管理和访问单个员工的数据
- 管理员工之间的关系。
我建议您创建一个类来处理列出的每个任务组。
定义一个
Employee类来跟踪或记录员工数据并处理现场处理/整理任务。
使用
Employees该类作为员工对象的容器。它可以处理诸如追踪员工主管的任务。
定义一个虚拟基类EmployeeLoader来定义一个接口(load,store,??)。然后为CSV文件序列化实现一个子类。(虚拟基类是可选的-
我不确定Python如何处理虚拟类,因此这甚至没有任何意义。)
所以:
- 创建具有
EmployeeCSVLoader
文件名的实例。 - 然后,加载程序可以构建
Employees
对象并解析文件。 - 读取每个记录时,将创建一个新的Employee对象并将其存储在Employees对象中。
- 现在,要求Employees对象填充主管链接。
- 遍历Employees对象的雇员集合,并要求每个人整理自己。
- 最后,让序列化对象处理更新数据文件。
为什么这种设计值得努力?
它使事情更容易理解。较小的,以任务为中心的对象更易于为其创建干净,一致的API。
如果发现您需要XML序列化格式,则添加新格式变得很简单。子类化您的虚拟加载器类,以处理XML解析/生成。现在,您可以在CSV和XML格式之间无缝切换。
总而言之,使用对象来简化和构建数据。将常见数据和行为分成单独的类。保持每个班级专注于一种类型的能力。如果您的类是集合,访问器,工厂,厨房水槽,则该API将永远无法使用:它太大了,并装载了不同的方法组。但是,如果您的课程仍在讨论中,那么它们将易于测试,维护,使用,重用和扩展。



