实战:两天构建三层架构工程报价系统

0 下载量 156 浏览量 更新于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层的方法处理请求,再将结果返回给用户显示。 总结来说,这个小型工程报价系统的实现,展示了如何高效地利用三层架构进行快速开发。通过合理分层,可以提高代码的可读性、可维护性和复用性。对于初学者和开发者来说,这是一个很好的实践案例,有助于理解和掌握三层架构的设计思想。