实战:两天构建三层架构工程报价系统
70 浏览量
更新于2024-08-28
收藏 506KB PDF 举报
"本文主要介绍了如何在两天内利用三层架构快速构建一个小型的工程报价系统。这个系统实现了基本的增删改查功能,并且详细阐述了分层设计的实现过程,包括模型层、数据访问层和业务逻辑层的代码设计。"
在软件开发中,三层架构是一种常见的设计模式,它将应用程序分为三个主要部分:表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这个小型工程报价系统就是基于这种架构构建的,主要目的是为了实践和理解三层架构。
1. **模型层(Model)**:在模型层中,作者创建了对象来映射数据库中的表,特别处理了主外键关系。例如,当一个表中包含外键引用另一张表的主键时,作者会在对象中添加一个对应的外键对象,用于存储相关数据。这样做的好处是可以保持对象的完整性,方便在业务逻辑层进行操作。
```csharp
private Product_product;
private Project_project;
public Project_Project
{
get { return _project; }
set { _project = value; }
}
public Product_Product
{
get { return _product; }
set { _product = value; }
}
```
2. **数据访问层(DAL)**:在数据访问层,作者避免使用DataSet,而是选择将查询结果封装成Model对象的IEnumerable集合。这样可以减少对DataSet的依赖,使得业务逻辑层更加清晰。DAL中的一个关键方法是`ToModelsByFK`,它将数据库读取器的结果转换为Model对象列表,便于上层调用。
```csharp
protected IEnumerable<T> ToModelsByFK(SqlDataReader reader)
{
var list = new List<T>();
while (reader.Read())
{
list.Add(ToModelByFK(reader));
}
return list;
}
```
3. **业务逻辑层(BLL)**:业务逻辑层负责处理实际的业务规则和操作,如数据的增删改查。在这个系统中,可能会有如`GetProjectByCondition`这样的方法,用于根据条件获取项目数据,`UpdatePassChecked`用于更新已检查的项目,以及`Add`方法用于添加新的项目报价。
```csharp
public void GetProjectByCondition(Func<ProjectItem, bool> condition)
{
// 实现根据条件获取项目的方法
}
public void UpdatePassChecked(ProjectItem item)
{
// 实现更新项目状态的方法
}
public void Add(ProjectItem item)
{
// 实现添加新项目报价的方法
}
```
4. **界面层(UI)**:虽然在摘要中没有详细描述,但UI层通常会包含用户交互的界面设计和控制。用户可以通过界面输入查询条件,系统会调用BLL层的方法处理请求,再将结果返回给用户显示。
总结来说,这个小型工程报价系统的实现,展示了如何高效地利用三层架构进行快速开发。通过合理分层,可以提高代码的可读性、可维护性和复用性。对于初学者和开发者来说,这是一个很好的实践案例,有助于理解和掌握三层架构的设计思想。
2012-06-26 上传
2013-12-18 上传
2021-08-15 上传
2023-07-25 上传
2023-02-21 上传
2023-03-02 上传
2023-07-13 上传
2023-06-09 上传
2023-05-18 上传
夏影影
- 粉丝: 317
- 资源: 914
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍