繁体   English   中英

如何使我的业务对象层在其方法中使用管理层?

[英]How can I get my business objects layer to use the management layer in their methods?

我在VS2010中有一个解决方案,其中包含多个项目,每个项目都构成了我的应用程序中的一层。 我有目前没有任何方法的对象的业务实体,并且我有一个引用其项目中业务实体层的管理层。 现在,我认为我的应用程序设计不佳,希望将方法从助手类(位于另一层)转移到我将在业务实体内部创建的方法。

例如,我有一个VirtualMachine对象,该对象使用帮助程序类在其上调用Reboot()方法,该方法将请求传递给管理层。 静态管理器类与重新启动VM的API对话。 我想将Reboot()方法移到VirtualMachine对象中,但是我将需要引用管理层:

public void Reboot()
{  
    VMManager.Reboot(this.Name);
}

因此,如果在我的实体项目中添加对管理项目的引用,则会得到循环依赖项错误,应该是这样。 如何解决这种情况? 我是否需要实体层和管理层之间的另一层? 或者,我应该忘掉它并保持原样。

该应用程序现在可以正常运行,但是我担心我的设计不是特别以OOP为中心,我想对此进行更正。

您是正确的,您不应该进行循环引用,制作另一层可能只是帮助您避免了循环引用错误,但是如果我正确理解您的话,它仍将是循环引用。

我会坐下来,绘制地图,方法只能分层调用。 那是程序“最底层”的最通用方法,您越专业化,您应该将其放在层次结构中的较高位置。

您正在制作的程序的API应该位于此层次结构的底部。

您可能不需要重新设计整个项目。 但是,听起来您可以帮助自己可视化结构。

管理层(因为这是工作的层)似乎不适合业务层的顶部。 实际上,我们在业务层之上没有这样的层,我们仅在业务层的顶部具有外观层 ,这与您所需要的不同。

从您的项目中可以看到,您需要业务层来使用帮助程序类的服务:

// Business layer
public class VirtualMachineManager
{
   IRebooter _rebooter;
   public class(IRebooter rebooter)
   {
      _rebooter = rebooter;
   }
}

// helper class
public class Rebooter : IRebooter 
{
   ....
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM