第十二章:迭进

12.1 简单设计规则

  1. 运行所有测试:保持类短小且单一的设计方案
  2. 重构:添加代码的时候就要琢磨设计是否退步。测试消除了清理代码就会破坏代码的恐惧

12.2 不可重复

模板方法模式(Template Method)是一种移除高层级重复的通用技巧。如

public class VacationPolicy{
    public void accrueUSDicisionVacation(){
        //step 1: 计算
        //step 2:US操作
           //step 3:提交
    }
    
    public vpid accrueEUDivisionVacation(){
        //step 1: 计算
        //step 2:EU操作
           //step 3:提交
    }
}

以上的代码step 1 和 3 是重复的。可以通过 模板方法 改成以下

abstract public class VacationPolicy{
    public void accrueVacation(){
        calculateBaseVacationHours();
        alterForLegalMiniMums();
        aapplyToPayroll();
    }
       private void calculateBaseVacationHours(){ /* .... */ }
    abstract void alterForLegalMiniMums(){ /* .. */ }
    private void aapplyToPayroll(){ /* .. */ }
}
public class USVacationPolicy extends VacationPolicy{
    @Override protected void alterForLegalMiniMums(){
        // US specifc logic
    }
}

public class EUVactionPolicy extend VacationPolicy{
    @Override protected void alterForLegalMiniMums(){
        // EU specif logic
    }
}

12.3 表达力、尽可能少的类和方法

这部分需要很多的尝试和经验。

第十三章:并发编程

并发的说法

  • 并发在性能和编写额外代码上存在开销
  • 并发是复杂的。
  • 并发的缺陷往往是偶发事件。
  • 并发需要对设计策略做根本性的修改

并发防御原则

  • 单一权责(SRP):分离开发相关代码与其他代码
  • 限制数据作用域:方案之一使用 synchronized
  • 使用数据副本
  • 线程应尽可能地独立

关于 并发的使用。传送门


一个好奇的人