整洁代码之道 11 系统

整洁代码的层次继续上升,从类到系统,本章讲解如何在较高的系统层级上保持代码整洁

11.1 如何建造一个城市

  1. 系统和城市一样,有些人负责全局,其他人负责细节,几乎不可能一个人掌控所有

11.2 将系统的构造与使用分开

  1. 软件系统应该将启动过程和运行时逻辑进行分离

11.2.1 分解 main 方法

  1. 将构造与使用分开的方法之一就是 将全部的构造过程搬迁到 main 方法中

11.2.2 工厂

  1. 有时候应用程序也要负责确定什么时候创建对象

11.2.3 依赖注入( Dependency Injection ,DI )

  1. 控制反转( Inversion of Control ,IoC ) 时依赖注入的一种应用手段
  2. 控制反转将对象的第二权责抽离出来,转移到另一个属于它的对象中,使两个对象都遵循 单一权责原则

11.3 扩容

  1. 系统需要扩容是非常现实的需求,因为一开始没有人能把一切都设计的那么超前
  2. 迭代和增量开发是每个系统都需要经历的事
  3. 面向切面编程( aspect-oriented progamming ,AOP ) 是一种可以让系统实现快速扩容的编程手段
  4. 在 AOP 中,被称为切面的模块构造,指明了系统中哪些行为会通过某种方式被修改,从而让某些特定场景被支持

11.4 Java 代理

  1. JDK 提供的 动态代理 只能和借口协同工作
  2. 庞大的代码量和复杂的操作逻辑是动态代理的两大弱点

11.5 纯 Java AOP 框架

  1. SpringAOP 就是一个纯 Java AOP 框架,它通过编写 XML 内容来实现系统中各种 Bean 的依赖注入

11.6 AspectJ 的切面

  1. AspectJ 是通过切面来实现关注面切分的工具

11.7 测试驱动系统架构

  1. 最佳的系统架构由模块化的关注面领域组成,每个关注面都使用统一对象实现

11.8 优化决策

  1. 模块化和关注面切分成就了分散化的管理和决策
  2. 有时候决策不一定非要预先作出,延迟决策到最后一刻也不失为一种好手段

11.9 明智使用添加了可论证价值的标准

  1. 创立标准的过程有时非常漫长

11.10 系统需要领域特定语言

  1. 领域特定语言( Doamin-Specific Lanuage ,DSL ) 是一种单独的小型脚本语言,或通过标准语言编写的 API 集合

11.11 小结

  1. 系统也应该是整洁的
  2. 侵害性架构会湮灭系统逻辑,冲击整个系统的敏捷开发能力
  3. 无论是设计系统或单独的模块,都最好使用当前环境下可实现的最简单方案
发布了418 篇原创文章 · 获赞 47 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/asing1elife/article/details/102874117