在我们创建软件的时候,有很多的功能是和要解决的业务领域没有关系的,他们是软件的基础部件,或者是为软件服务的。例如:权限、日志、数据访问、文件访问、网络访问、用户界面等。最好将这部分功能从业务领域分离开来,独立出来,因为这部分功能是相对稳定的,这样既保证了这部分的独立性,便于升级维护,不至于影响业务领域的功能实现,同时将业务功能,业务规则尽可能放在业务逻辑处理层。这样在以后如果修改业务逻辑,不至于需要修改基础部件,或者是修改散落在各处的业务逻辑代码。
还有一点好处就是利于自动化测试。可以对独立的模块进行自动化测试,以后修改模块或者重构模块,只要将模块对应的测试脚本跑一遍,没有问题的话,就说明修改或者重构是正确的,就可以集成到系统中。
因此,分层就是这个作用。将不同关注点的功能独立在一个层中,保证层的内聚性,每一层只依赖它下面的一层,减少耦合和依赖。
一个通用的领域驱动设计的架构性解决方案通常包含四层:
- 用户界面层,负责用户界面的展示。
- 应用层,处理用户的输入。
- 领域层,包含领域的信息,业务的核心所在,业务对象的持久化交给下面的基础设施层。
- 基础设施层,作为其他层的支撑存在。
将应用划分为独立的层,并建立层之间的交换规则,也即是层的接口,是相当重要的。
模块,一提起模块就好像进行面向过程开发时候的概念。其实在面向对象中,这个概念也是适用的。可以考虑先划分模块,保持模块的独立性,方便部署和重构,然后在每一个模块中应用分层的设计,便于层的升级和维护。最大限度的保持系统的可扩展性。
领域驱动设计使得我们可以一直专注于用户的业务领域,不至于偏离方向,应该说是一个永不过时的指导原则。
分享到:
相关推荐
【PB入门级教程】深入解析 PowerBuilder,简称PB,是由PowerSoft公司(现已被Sybase收购)开发的一款强大的数据库应用程序开发工具。它基于客户端/服务器(C/S)架构,专为快速构建数据库应用而设计。在C/S体系中,...
总的来说,“ARM嵌入式入门级教程”是一个全面的起点,它将引导你进入这个充满挑战和机遇的领域。通过这个教程,你不仅会掌握ARM处理器的基础,还能获得开发和调试嵌入式系统的实践经验,从而为未来的项目打下坚实的...
通过《ARM嵌入式入门级教程.pdf》的学习,你可以逐步掌握ARM架构的原理、嵌入式系统的组成、开发工具的使用以及相关的编程技术,为后续的嵌入式开发打下坚实的基础。在实践中不断学习和探索,你将能够驾驭这个充满...
ARM架构是目前广泛应用在嵌入式系统、移动设备和服务器领域的处理器架构,以其低功耗、高性能的特点受到广泛赞誉。本教程全集是为初学者设计的,旨在帮助你掌握ARM的基本指令集和开发知识。 一、ARM指令集 ARM指令...
ASP C# 入门级资料是一套专门为初学者设计的学习资源,旨在帮助新手快速掌握ASP.NET平台上的C#编程技术。ASP.NET是由微软开发的一种Web应用程序框架,它整合了C#这种强大的编程语言,用于构建动态、交互式的网页和...
Keil 是一款强大的嵌入式开发工具,尤其在微控制器(MCU)编程领域中广泛应用。本教程将带你深入理解Keil的使用,通过一系列实例,帮助你掌握其基本功能和高级特性。以下是对Keil及其入门实例教程的详细解析。 1. *...
本资源“Windows驱动经典快速入门+驱动宝典”是针对初学者设计的,旨在帮助他们快速掌握Windows驱动开发的基本概念和技能。以下是关于Windows驱动开发的一些核心知识点: 1. **驱动程序基础**:驱动程序是计算机...
《Linux设备驱动程序设计入门》是一本面向初学者的教程,特别适合那些对Linux系统有一定了解,希望深入学习设备驱动程序开发的读者。在RedHat9这个稳定的Linux发行版上进行实践,使得这本书中的示例和操作具有较高的...
C++是一种强大的、通用的编程语言,被广泛应用于系统软件、应用软件、游戏开发、设备驱动程序等各个领域。作为初学者,理解并掌握C++的基础至关重要。本套" C++入门基础教程--全套 "旨在为新手提供全面的C++学习路径...
**C语言程序设计入门教程** C语言是一种强大的、低级的编程语言,广泛应用于系统开发、软件编程、设备驱动编写等多个领域。对于初学者来说,理解C语言的基础知识至关重要,因为它是许多现代编程语言的基础。这份...
### Proteus 入门教程详解 #### 一、Proteus 软件概述与界面介绍 Proteus是一款强大的电子电路设计与仿真软件,它包括两大组件:ISIS(电路原理图绘制)和ARES(PCB设计)。Proteus ISIS提供了一套完整的电路原理...
### 组态王教程知识点详解 #### 一、组态王软件概述 - **软件定位**:“组态王”是一款专用于工业自动化领域的组态软件,适用于Microsoft Windows 98/NT中文操作系统平台,具备全中文界面,方便国内用户理解和使用...
在接下来的内容中,我们将详细了解KISSsys入门实例教程3.pdf的内容,该教程主要介绍了如何使用KISSsys软件对行星轮系进行建模、设置和仿真实例。 首先,教程分为两个部分,需要按照顺序进行学习。第一部分是引言,...
本教程以任务驱动的方式,旨在帮助学习者掌握这两门技术的基础知识以及实现各种网页特效的方法。 首先,JavaScript是一种轻量级的解释型编程语言,常用于网页和浏览器端的编程。它允许开发者在用户与网页交互时动态...
5. **约束驱动设计**:使用IEEE 1800 SystemVerilog扩展,通过约束来指定设计参数,简化设计流程。 通过本教程,你将能够掌握Verilog的基本概念,编写简单的数字逻辑设计,并逐步进阶到高级技巧,包括综合、验证和...
《软件测试新手宝典》是一本专为初学者设计的软件测试行业入门级经典教程,旨在帮助新手快速理解和掌握软件测试的基本概念、方法和技术。在软件开发过程中,测试扮演着至关重要的角色,确保产品的质量和稳定性。本...
本“西门子WINCC入门级”教程旨在帮助初学者快速了解并上手这款软件。通过48集的视频教程,你可以学习到以下核心知识点: 1. **基本概念与界面**:了解WINCC的基本架构,包括项目管理、变量管理、画面设计、报警...