11 系统

本文探讨了如何构建和扩展系统,强调了关注点分离的重要性。通过Java代理、纯JavaAOP框架和AspectJ,阐述了三种切面机制在处理横贯性问题如事务、安全和缓存等方面的角色。测试驱动的系统架构使得代码与架构关注面分离,有助于优化决策和保持敏捷性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何建造一个城市

  • 分工清晰明确 全局&细节—— 角色:老师 医生 程序员 …
  • 恰当的抽象层级模块 ——管理: 老板 领导 下属 …
  • 关注面切分 —— 全局性适用功能:每个人都要有身份证 社保卡

将系统的构造与使用分开

构造与使用分开的方法

  • 分解main 将全部构造过程搬迁到 main
  • 依赖注入 控制反转 DI容器 工厂解耦了构造细节

扩容

横贯式关注面 —— 关注面切分 将策略铺展到许多对象中 横贯孤立的模块化 横贯性问题

  • 声明式事务
  • 安全
  • 缓存
  • 恢复
  • 部分持久化行为 行为的修改由 AOP 框架以无损方式在目标代码中进行

三种切面机制

Java代理

适用简单情形 在单独的类或者对象中包装方法调用

  • 需要与接口协同工作:JDK 代理
  • 不需要与接口协同工作:CGLIB

代理两大弱点

  • 代码量
  • 复杂度

创建整洁代码变难 也没有提供在系统范围内指定执行点的机制

纯 Java AOP 框架

配置文件 xml —— 通过描述性手段支持横贯式关注面的模型

AspectJ 的方面

通过方面来实现关注面切分功能 —— AspectJ

测试驱动系统架构

通过方面式的手段切分关注面的威力不可低估 这样可以将代码层面架构关注面分离开 就有可能真正地用测试来驱动架构
最佳的系统架构由模块化关注面领域组成 不同领域间用最不具有侵害性的方面或类方面工具整合起来

优化决策

模块化和关注面切分成就了分散化管理和决策

总结 避免侵害性架构 避免困扰领域逻辑 防止敏捷能力受到冲击 保证测试驱动生产力不受干扰

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅气呢杰哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值