《代码整洁之道》--第11章 系统

第11章
  1. 将系统的构造和使用分开
    软件系统应将启动过程和和运行时的逻辑分开,在启动过程中构建应用对象,也会存在互相缠结的依赖关系。
    a. 分解main
      

    b. 工厂
      

    c. 依赖注入
      有一种强大的机制可以实现分离构造与使用,那就是依赖注入,控制反转在依赖管理中的一种应用手段。控制反转将第二全责从对象中拿出来,转移到另一个专与于此的对象中,从而遵循了单一全责

    原则。在依赖管理情境中,对象不应负责实体化对自身的依赖。反之,它应当将这份全责移交给其他“有权利”的机制,从而实现控制的反转。因为初始设置是一种全局问题,这种授权机制通常要么是main,

    要么是有特定目的的容器。
      Jndi查找是DI的一种部分实现,在JNDI中,对象请求目录服务器提供一种符合某个特定名称的“服务”。
      延后初始化的好处:多数DI容器在需要对象之前并不构造对象,其次,许多这类容器提供调用工厂或者代理的机制,而这种机制可谓延迟赋值或类似的优化处理所用
  3扩容
    一开始做对系统纯属神话。反之,我们应该只去实现今天的用户故事,然后重构,明天再扩展系统,实现用户的新故事。这就是迭代和增量敏捷的精髓所在。测试驱动开发,重构以及他们打造出的整洁代码,

  在代码层面保证了整个过程的实现。
    软件系统和物理系统可以类比,他们的架构都可以递增式的增长,只要我们持续将关注面恰当的切分。
    横贯式关注面:
      原则上,可以从模块、封装的角度推理持久化策略。但是在实践上,却不得不将实现了持久化策略的代码铺展到许多对象中,这就是横贯式关注面
      实际上,EJB架构处理持久化、安全和事务的方法是“预期“面向方面编程,而Aop是一种恢复横贯式关注面模块化的普适手段,
      在AOP中,被称为方面的模块构造指明了系统中哪些点的行为会以某种一致的方式被修改,从而支持某种特定的场景。

  4.java代理
    Java代理适用于简单的情况,例如在单独的对象或类中包装方法调用,然而JDK提供的动态代理仅能与接口协同工作,对于代理类,你得使用字节码操作哭,cglib
    代码量和复杂度是代理的俩打弱点,创建整洁代码变得很难。
  5.纯JavaAOP框架
    Spring aop,jboss aop
  6.aspectJ
  7.测试驱动系统架构
    最佳的系统架构是由模块化的关注面领域组成,每个关注面均用纯java语言对象实现。不同的领域之间用最不具有侵害性的方面或类方面工具整合起来。
  8.优化决策
    模块化和关注面切分成就了分散化管理和决策。在巨大的系统中,无人能做所有的决策。
    延迟决策至最后一刻,也是好手段。
    拥有模块化关注面的POJO系统提供的敏捷能力,允许我们基于最新的知识做出优化的,时机刚好的决策。决策的复杂性也降低了
  9. 明智使用添加了可论证价值的标准
    有了标准,就能易用想法和组件、雇佣拥有相关经验的人才、封装好点子、以及将组件连接起来。不过,创立标准的过程有时却是漫长到行业等不及的程度,有些标准没能与他要服务的采用者的真实需求相

  结合。
  10.系统需要领域特定语言
    DSL允许所有抽象层级和应用程序中的所有领域,从高级策略到底层细节,使用POJO来表达。

原文地址:https://www.cnblogs.com/dhName/p/11592634.html