【发布时间】:2011-05-27 22:24:11
【问题描述】:
我有一个 3 层的项目。 UI、业务层和数据层。
UI 调用 BL。 BL 呼叫 DL。 DL 执行数据库操作。就这么简单。
我想对我的 BL 方法进行单元测试,所以我对其进行了一些更改,现在我在 BL 构造函数中接受 DL 作为参数,以便我可以创建 DL 的 Mock 对象。
这让我改变了我的 UI 层,因为我的 UI 调用了我的 BL,并且根据架构规则,如果我将我的 DL 的引用添加到我的 UI,我认为这不是一个好的设计。
有人可以提出更好的方法吗?我需要更改架构还是我在这里做错了什么?我可以在这里介绍 Facade Manager 吗?非常感谢您的建议示例。
--编辑--
代码如下:
在 BL 中:
public MyBusinessLayer()
{
}
//To pass mock object of WCF Service
public MyBusinessLayer(ISomeServices svc)
{
someServiceRef = svc;
}
//To pass mock object of Data Layer.
public MyBusinessLayer(ISomeDataLayer dl)
{
someDlRef = dl;
}
在用户界面中:
//To do this i have to add DL reference to UI
MyBusinessLater b = new MyBusinessLayer(new ISomeService());
【问题讨论】:
-
展示一些你在做什么的代码怎么样?
-
我可以创建 Manager 类并在 UI 层中引用它并向它添加 BL 和 DL 引用,但我再次对将 BL 和 DL 引用添加到同一个(管理器)类感到不舒服。我希望 DL 仅在 BL 中被引用。
标签: c# design-patterns architecture