复用: 白盒复用:源代码可见,可修改和扩展 黑盒复用:源代码不可见,不能修改 维度 代码层面 模块层面:类、接口 库层面:API,包 系统层面:框架 白盒框架,通过代码层面的继承进行框架扩展 黑盒框架,通过实现特定接口/delegation进行框架扩展 复用原则 泛型通配符 Comparator和Comparable delegation CRP示意图: 例子: