写点什么

文章:领域模型管理与 AOP

  • 2008-02-28
  • 本文字数:688 字

    阅读完需:约 2 分钟

如今,很多项目都关注于领域驱动设计,但事情并非总是那么容易。其中最重要的事情就是从只因技术原因而存在的代码中将领域代码分离出来。

Mats Helander 在 InfoQ 写了一篇文章,是关于如何用他称为领域模型管理的概念来设法处理领域模型。在文章中,Mats 引领读者一步步解决了在实现一个领域模型时涉及设计和关注点分离的普遍问题,解释了解决问题的方法,并传授了在这个过程中出现的面向方向编程、一对设计模式、以及关于对象 / 关系映射的一些知识。

在下面的文章摘录中,Mats 谈论了把基础架构代码放在哪里的问题:

随着基础架构代码的增长,找到一个处理它的优良架构变得越来越重要。问题主要在于——我们是否允许把一些基础架构代码放在我们的领域模型类里面,还是无论如何应该避免这样做?

避免基础架构代码进入领域模型类的论点是强有力的:领域模型应该表示应用程序所处理的核心业务概念。对于想大量使用其领域模型的应用来说,保持这些类干净、轻量级、易于维护是一个极好的架构目标。

另一方面,我们接下来将会看到,保持领域模型类完全不含基础架构代码——通常被称为使用 POJO/POCO(Plain Old Java/CLR Objects)领域模型,这种极端的路线也被证明是有问题的。最终往往导致采用笨重的、低效率的变通方法来解决问题——而且有些功能用这种方式根本不可能实现。

也就是说,我们遇到的还是一个权衡利弊的情况,我们应该尽量在领域模型类里面只放必不可少的基础架构代码,决不超出这个限度。我们付出领域模型的轻微发胖,换来效率的提高以及使一些必要领域模型管理功能有可能实现。毕竟,软件架构很大程度上是关于如何做一笔好买卖。

阅读全文:领域模型方面的管理 获取源代码

2008-02-28 02:401643
用户头像

发布了 151 篇内容, 共 68.9 次阅读, 收获喜欢 18 次。

关注

评论

发布
暂无评论
发现更多内容

flutter系列之:flutter中常用的GridView layout详解

程序那些事

flutter 程序那些事 6月月更

linux环境下实现银行间算法

乌龟哥哥

6月月更

MySql索引

工程师日月

6月月更

在 Golang 中构建 CRUD 应用程序

宇宙之一粟

6月月更

深入剖析 | 应用层Protocol的标准设计

九叔(高翔龙)

架构 协议 TCP/IP dubbo源码 粘包/拆包

InfoQ 极客传媒 15 周年庆征文|ZooKeeper进阶(一):Zookeeper简介

No Silver Bullet

zookeeper 运维 6月月更 InfoQ极客传媒15周年庆

【Python技能树共建】文件模块

梦想橡皮擦

Python 6月月更

『Three.js』场景 Scene

德育处主任

canvas three.js 6月月更

数据库每日一题---第10天:组合两个表

知心宝贝

前端 后端 6月月更

FFmpeg原理

Loken

ffmpeg 音视频课程

InfoQ 极客传媒 15 周年庆征文|简述构建微服务架构的四大挑战

阿泽🧸

微服务 6月月更 InfoQ极客传媒15周年庆

iShot

IT蜗壳-Tango

6月日更 6月月更

前端之uni-app研究学习day_1

恒山其若陋兮

6月月更

【愚公系列】2022年06月 面向对象设计原则(七)-迪米特法则

愚公搬代码

6月月更

spring4.1.8扩展实战之二:Aware接口揭秘

程序员欣宸

Java spring Spring Framework 6月月更

Linux开发_介绍BMP图片上下翻转、添加水印

DS小龙哥

6月月更

C#入门系列(十三) -- 初识结构体

陈言必行

C# 6月月更

设计消息队列存储消息数据的 MySQL 表格

踩着太阳看日出

架构训练营

Flutter库推荐Sizer 可帮助您轻松创建响应式 UI

坚果

6月月更

【建议收藏】通俗易懂图解网络知识-第一篇

利志分享

数组

Jason199

数组 js 数组操作 6月月更

ConcurrentHashMap 源码分析-初始化

zarmnosaj

6月月更

Springboot 升级到 2.6.1 的坑

Damon

微服务 微服务架构 Spring Cloud 6月月更

【Python技能树共建】selenium入手篇

梦想橡皮擦

Python 6月月更

M_8:设计消息队列存储消息数据的 MySQL 表格

Jadedev

架构训练营

细数攻防演练中十大关键防守点

穿过生命散发芬芳

6月月更 攻防演练

应用最广泛的动态路由协议:OSPF

wljslmz

OSPF 动态路由 6月月更

设计消息队列存储信息数据的MySQL表结构

dan629xy

【Java Web系列】Cookie工作流程及基本使用

倔强的牛角

Java javaWeb Cookie 6月月更

vivo大规模 Kubernetes 集群自动化运维实践

vivo互联网技术

Kubernetes operator ansible kubeadm Kubevirt

设计消息队列存储消息数据的 MySQL 表格

大眼喵

「架构实战营」

文章:领域模型管理与AOP_架构_Mats Helander_InfoQ精选文章