面向对象的图层

Object oriented layers

本文关键字:图层 面向对象的      更新时间:2023-10-16

嘿,伙计们,我已经用C++编程OOP一个学期了,我刚刚开始学习C#。我仍然不完全理解如何将这些层彼此分离,以及什么在哪里起作用。据我所知,有以下几层:

存储->数据访问->业务逻辑->命令处理器->用户界面

现在我似乎无法确切理解每一层的责任是什么。

我知道数据访问只包含Add、Update、Delete、Query等方法,数据访问不在乎插入什么,它只接收对象作为参数并对其进行任何处理。业务逻辑是否根据命令处理器发送的数据创建对象,命令处理器从用户界面获取数据并对其执行输入验证?

此外,我将如何发送和接收不同的命令,例如Query命令与insert命令有何不同,因为它需要发回数据。。

正如你可能知道的,我很失落,我一直很难找到关于这个主题的好教程。

谢谢!

编辑。

我试图从数据访问层查询方法开始。我有三个子对象存储在父类型的泛型列表中。

我有不同的查询选项,其中一个是类型。因此,我需要搜索父列表,并返回每个对象的数据(如果它是指定的类型)。我的父对象有一个覆盖的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;
}

问题中的箭头令人困惑,因此在讨论过程中我将更改它们。

所以只让我放两个链接,所以当提到CRUDMVC架构时,请尝试搜索它们。

让我们一步一个脚印:

存储->数据访问

这通常由ORM处理。ORM将处理数据库访问。

您创建的ORM加上自定义(模型)对象允许抽象数据访问。这看起来像:

ORM在数据库之间转换数据,以使其可用。ORM可以为您处理CRUD操作,这样查询、更新和插入就不会出现在代码的其他部分中。

业务逻辑

业务逻辑通过访问、修改和保存数据来处理数据

业务逻辑可以访问您的模型,以完成数据的访问和保存。

修改部分在业务逻辑中实现。

业务逻辑可以是小型、大型,也可以是其他业务运行器的组合。

我们的图表现在看起来像:

数据库<-ORM->型号<-业务逻辑

命令处理器

命令处理器运行业务逻辑,并将整个系统的各个部分拼凑在一起,有时在MVC中被称为控制器

数据库<-ORM->型号<-业务逻辑<-命令处理器

用户界面

用户界面(UI)可以分为两部分,数据表示和用户输入。

数据表示在MCV中被称为视图,负责获取数据并使其为用户可读。

用户输入触发命令处理器的各个部分。

总体:

,-> View
Database <- ORM -> Models <- Business Logic <- Command Processor
`<- User Input