第十二章:迭进
12.1 简单设计规则
- 运行所有测试:保持类短小且单一的设计方案
- 重构:添加代码的时候就要琢磨设计是否退步。测试消除了清理代码就会破坏代码的恐惧
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
- 使用数据副本
- 线程应尽可能地独立
关于 并发的使用。传送门