OOP设计用于删除具有许多依赖对象的对象

时间:2012-01-05 09:56:52

标签: oop

我想知道设计删除对象的最佳方法,触发器删除许多依赖对象。

这是一个例子。有一个雇主班。删除雇主时,将删除其所有工作,发票。删除作业时,也会删除其类别选择。等等。因此,您可以看到删除Employer会触发更多对象的删除。问题是我必须将删除依赖对象所需的许多参数传递给Employer类中的delete方法。

这是一个简化的例子。想象一下主要的课程。删除主对象时,也必须删除对象Dep1,Dep2。删除Dep1时,也必须删除Dep11。如果删除方法如下所示:Dep1.delete(arg1),Dep2.delete(arg2),Dep11.delete(arg3),则Main上的delete方法必须如下所示:Main.delete(arg1,arg2,arg3) 。你看?更多的对象依赖于Main - 删除需要更多的参数。

我还必须指出,我有兴趣从数据库中删除,即删除其“业务逻辑”意义。我甚至没有在删除方法中取消设置“已删除”对象。

我考虑过哪些选项:

  • 将删除所需的参数分组到单独的对象中。我只是没有看到所有这些参数如何分组。他们根本不属于一个人。例如,如果需要Invoice_searcher和Job_searcher - 为什么它们会在一个对象中一起出现?那可能是什么对象?
  • 将相关对象的删除移出Employer类中的delete方法。在这种情况下,不显式调用子进程上的delete方法会使系统处于不一致状态。我想避免这种情况。

3 个答案:

答案 0 :(得分:1)

如果要将参数传递给删除功能,则表示您犯了错误。

您调用删除功能的每个对象应该能够识别它是其父项的其他对象

我强调 object 因为听起来你是从关系的角度来看这个。

答案 1 :(得分:0)

尝试以这样的方式使用Composition:一旦你使员工参考更少,其他人将自动引用更少....

其他方法是获取嵌套类的帮助,如果最顶层的封装类将获得 未引用的其他也将自动获取未引用的...(但请确保你没有在其他类中提取嵌套类(比如你的内部类)的引用。)

答案 2 :(得分:0)

在我的工作中,我不需要编写很多代码来删除,所以请大家多听一些。查看这些对象/记录的创建方式可能会有所帮助,并以相同的方式处理删除。例如,如果创建逻辑是这样的:

  1. 创建雇主
  2. 创建发票
  3. 将发票与雇主关联
  4. 可能删除逻辑应该如下所示:

    1. 删除发票与雇主的关联
    2. 删除发票
    3. 删除雇主
    4. 只要实体以一致的方式创建,以相反的顺序删除它们也应该证明是一致的。