将系统的构造与使用分开:
分解main:将全部构造过程搬迁到main或被称之为main的模块中;
设计系统的其余部分时,假设所有对象都已正确构造和设置;
应用程序对main或者构造过程一无所知;
工厂:抽象工厂模式,构造细节隔离于应用程序代码之外;
依赖注入:控制反转将第二权责从对象中拿出来,转移到另一个专注于此的对象中;
扩容:横贯式关注面
Java代理、纯Java AOP框架、AspectJ的方面、测试驱动系统架构、优化决策
明智使用添加了可论证价值的标准、系统需要领域特定语言,领域特定语言(Domain-Specific Language,DSL)