嘿伙计们,我已经用 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;
}