首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多层应用设计

多层应用设计
EN

Stack Overflow用户
提问于 2016-06-30 15:55:35
回答 1查看 282关注 0票数 0

在每个人向我扔石头之前,我已经搜索过谷歌/ MSDN / StackOver流,寻找相关的问题和答案,但没有一个适合我的需求。

我正在C# - Windows中开发一个相当大的应用程序,该应用程序目前分为以下几个部分:

  1. 数据层
  2. 域层
  3. 用户界面层

基本上,在我目前的情况下,这些层的作用如下

  1. 数据层的响应能力主要是与数据存储进行通信,基本上是CRUD操作.
  2. 域层的响应能力是保存对象的模型,创建对象,应用业务规则等.
  3. 用户界面层,基本上这就是用户所看到和交互的内容。

我的问题是:

从UI层中,用户可以访问诸如: Name、Project、Project (基本上是TextBoxes )、日历等字段--所有这些字段都是UI组件。

在用户输入之后,我调用一个名为:AddExplorerNode(string name, string projectName, int projectNumber)的方法,该方法驻留在域层中。此方法根据传递的参数负责创建ExplorerNode对象(“特殊”TreeNode ),它要求传递的参数实际有效。

在对象被创建、清理、验证等之后--上面提到的相同的方法将创建的对象传递给数据层,后者将其推送到缓存库,然后如果缓存中的一切正常,则将其保存到数据存储区。

因此,到目前为止,基本上一切都是分开的UI -> -> DataLayer。

我的问题是,是否可以将域方法的签名替换为

AddExplorerNode(string name, string projectName, int projectNumber)AddExplorerNode(TreeNode node),并基于TreeNode对象及其属性,构造我需要的实际对象?我之所以这样问是因为,如果域层知道UI (在本例中是TreeNode UI组件),我们基本上就会打破这种分离。

例如,如果明年我们将WindowsForms交换为Console Application,那么由于Console Application将没有TreeNode UI组件,该项目就会中断。

在这种情况下,是否最好有一个域方法,该方法以5-10个参数( int's、字符串等)为基础,并基于这些参数来创建我的对象,或者用TreeNode UI组件替换参数呢?

提前谢谢你。

@编辑:

我问这个问题,因为我的一位同事检查了我的代码并开始重构它。通过重构,他向域层公开了实际的TreeNode UI组件。我的方法是AddExplorerNode(string name,string projectName,int projectNumber)等等。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-30 16:15:03

您可以创建与TreeNode类似的类,而不必实际成为TreeNode。

代码语言:javascript
复制
class TreeNodeModel
{
    public string Name { get; set; }
    public string ProjectName { get; set; }
    public int ProjectNumber { get; set; }
}

然后,您可以在UI中编写一个方法,将(复制) TreeNodeModel映射到实际的TreeNode。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38128096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档