我为这个问题的抽象性质道歉(出于商业原因无法发布真实代码),但我继承了一些我认为在结构上是错误的代码,我希望有人验证它是错误的。关于我如何正确处理的一些建议,因为我的 OO 技能不是他们应该具备的,这将是非常棒的。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Mynamespace
{
public class TopClass
{
private MiddleClass middleClass;
public TopClass()
{
this.middleClass = new MiddleClass();
}
public void SomeEventOccured()
{
BottomClass b = new BottomClass();
this.middleClass.NewBottomClass(this, b);
}
}
public class MiddleClass
{
private List<BottomClass> bottomClasses;
public void NewBottomClass(TopClass topClass, BottomClass newBottomClass)
{
// Need some functionality on TopClass here or use of it other properties.
// topClass.SomethingElse...
bottomClasses.Add(newBottomClass);
}
}
public class BottomClass
{
// Any old class structure
}
}
查询是围绕中间类方法中父类的使用,我认为将父类传递给每个调用以便中间类可以使用它的方法很奇怪。有什么建议么?
更新:
我们正在考虑解决这个问题的是:使用委托并将它们设置在底层类中,以便在执行方法的所有区域中调用顶层类。同样,在顶级类中访问的属性将通过简单的委托方法公开。在我们看来,这消除了循环所有权/引用,取而代之的是对象之间的双向通信。想法?