【发布时间】:2012-09-20 03:28:36
【问题描述】:
大家好,我已经用 C++ 编写了一个学期的 OOP,而我刚刚开始使用 C#。我仍然不完全了解如何将图层彼此分开以及在哪里做什么。据我了解,有以下几层:
存储 -> 数据访问 -> 业务逻辑 -> 命令处理器 -> 用户界面
现在我似乎无法完全理解每一层的职责是什么..
我了解数据访问仅包含添加、更新、删除、查询等方法,并且数据访问不关心它插入的内容,它只是接收对象作为参数并对其进行任何处理。业务逻辑是否从命令处理器发送的数据创建对象,命令处理器从用户界面获取数据并对其进行输入验证?
还有我将如何发送和接收不同的命令,例如查询命令与插入命令有何不同,因为它需要发回数据..
你可能会说我很迷茫,而且我一直很难找到关于这个主题的好教程。
谢谢!
编辑。
我尝试从数据访问层查询方法开始。我将三个子对象存储在父类型的通用列表中。
我有不同的查询选项,其中之一是类型。所以我需要搜索父列表并返回每个对象的数据,如果它是指定的类型。 我的父对象有一个被覆盖的 ToString() 以及我的子对象,它们调用父对象 ToString() 以将对象的所有数据放入一个字符串中。我在这里做业务逻辑职责吗?此外,当我获得与我的类型匹配的对象列表并尝试使用 foreach 调用 ToString() 进行迭代时,它只会调用父级 ToString() 我猜?
public string Lookup(Types type)
{
List<Parents> search = new List<Parent>();
switch (type)
{
case Types.TypeOne:
{
search = ParentDataBase.FindAll( delegate(Child1 findChild) {
return findChild is ChildOne; } );
}
break;
case Types.TypeTwo:
{
search = ParentDataBase.FindAll( delegate(Parents findChild) {
return findChild is ChildTwo; } );
}
break;
case Types.TypeThree:
{
search = ParentDataBase.FindAll( delegate(Parent findChild) {
return findChild is ChildThree; } );
}
break;
}
string results = "";
foreach (Parent x in search)
{
results += t.ToString();
}
return results;
}
【问题讨论】:
-
从mvc开始?然后根据您的项目,无论什么有意义,您都可以制作图层。避免额外的层。运用你的直觉。
-
写一些废话,请有经验的人改变需求,看看你需要从哪里提取东西。这更像是一个学习过程,而不是第一次就成功。
标签: c# c++ oop object-oriented-database c++-concepts