面向对象的图层
Object oriented layers
嘿,伙计们,我已经用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;
}
问题中的箭头令人困惑,因此在讨论过程中我将更改它们。
所以只让我放两个链接,所以当提到CRUD和MVC架构时,请尝试搜索它们。
让我们一步一个脚印:
存储->数据访问
这通常由ORM处理。ORM将处理数据库访问。
您创建的ORM加上自定义(模型)对象允许抽象数据访问。这看起来像:
ORM在数据库之间转换数据,以使其可用。ORM可以为您处理CRUD操作,这样查询、更新和插入就不会出现在代码的其他部分中。
业务逻辑
业务逻辑通过访问、修改和保存数据来处理数据
业务逻辑可以访问您的模型,以完成数据的访问和保存。
修改部分在业务逻辑中实现。
业务逻辑可以是小型、大型,也可以是其他业务运行器的组合。
我们的图表现在看起来像:
数据库<-ORM->型号<-业务逻辑
命令处理器
命令处理器运行业务逻辑,并将整个系统的各个部分拼凑在一起,有时在MVC中被称为控制器
数据库<-ORM->型号<-业务逻辑<-命令处理器
用户界面
用户界面(UI)可以分为两部分,数据表示和用户输入。
数据表示在MCV中被称为视图,负责获取数据并使其为用户可读。
用户输入触发命令处理器的各个部分。
总体:
,-> View
Database <- ORM -> Models <- Business Logic <- Command Processor
`<- User Input
- 是否有一种设计模式或面向对象的基本原则来处理这种共享资源的情况?
- 对"车辆的 vtable"的未定义引用 - 面向对象的编程练习
- 成员功能在面向对象的框架中返回std :: vector.size()的效率
- 以面向对象的方式解析自定义数据包
- 面向对象的编程-C 练习
- 如何使用面向对象的技术在 win32 和 c++ 中创建编辑控件
- C++面向对象的字典程序
- 我在哪里可以找到一些 c++ 中的好例子来研究面向对象的概念
- 面向对象的设计选择
- 我应该移至面向对象的编程(黑匣子)以及如何
- 面向对象的图层
- 创建面向对象的链表时出现编译问题(编译器错误C2664)
- 面向对象的数据设计
- 我试图通过我的方案实现的面向对象的想法是什么?
- 是否所有面向对象的语言都会在内存中创建大量重复信息
- C++ 面向对象的编程异常失败
- C++面向对象的客户端套接字应用程序设计
- 面向对象的编程逻辑
- C++基类中虚函数的面向对象的返回值
- C++面向对象的问题