首先,我不确定标题是否准确地描述了我所指的内容,因此请随时就如何称呼它发表评论,或者如果您有代表,请自行重命名。
例如,假设我有 2 个课程,书籍和图书馆。图书馆包含一个属性,该属性是它拥有的所有书籍的列表。一本书有一个属性,它是它所属的所有库的列表。
在书上,我有一个 RemoveFromLibrary 方法,可以从它的库列表中删除一个库。我也希望用同样的方法来清理另一端,即图书馆拥有的图书列表。另一端也是如此,Library 上的 RemoveBook 方法也清理了该 Book 的包含它的库列表。
首先,这有意义吗?调用代码不必担心清理并且不必调用 2 个方法来执行一个逻辑操作,这对我来说似乎很方便。我的意思是从一个列表中删除但从另一个列表中删除是没有意义的。同时,可以说这使它们耦合得太紧了,但我想如果它成为一个问题我会重构以解耦。
就实现这一点而言,我不确定的是,如果我只是调用普通的公共方法,那么我最终会得到每个方法调用另一个方法的无限循环。我可以创建一个不清理的单独的内部属性(在 C# 中工作),但感觉就像我用一种只能从另一个方法调用的方法乱扔 API。或者,我可以将底层集合公开为内部集合,这会更好一些,但它似乎仍然不理想。有没有更好的解决方案,或者我只需要使用这两个中的一个,或者确保调用代码本身进行清理?