快要考试了,根据所给提纲和上课所学边复习边罗列一下重难点吧。学得不好,如有疏漏欢迎指正!
一、Programing for/with reuse
Programming for reuse 面向复用编程:开发出可复用的软件
Programming with reuse 基于复用编程:利用已有的可复用软 件搭建应用系统
优点:降低成本和开发时间、经过充分 测试,可靠、稳定、标准化,在不同应用中保持一致
软件构造过程中的任何实体都可能被复用
可重用性高的表现:小、简单、与标准兼容、灵活可变、可扩展、泛型和参数化、模块化、稳定、将变化限制在局部、稳定、丰富的文档和帮助
二、LSP
更弱的前置条件和更强的后置条件、不变量要保持、子类型方法参数逆变、异常类型协变
Example:
三、协变、反协变
协变:父类型 --> 子类型时越来越具体的specific;返回值和异常值不变或者更具体
不允许反协变
四、数组的子类型化
代码重用,如List --> ArrayList
五、泛型的子类型化
类的重用,如L --> Vertex
六、泛型中的通配符(?)
可指代满足某种要求的一切类型,如List<? >
A list of unknown type
关键字:super(父类)、extends(子类)
七、Delegation
委派/委托:一个对象请求另一个对象的功能
绑定较弱、关系限定较弱、避免大量无用的方法
继承能做委托都能做
“委托”发生在object层面,而“继承”发生在class层面
三种形式:Use、Association、Composition/Aggregation
八、Comparator and Comparable
(1)Comparator:外部比较器,需要实现compare()方法,对外部传入的两个类进行比较,从而让外部方法在比较时调用
(2)Comparable:内部比较器,需要实现compareTo()方法,传入一个外部参数进行比对
九、CRP原则
优先使用委托编程
Example:
十、接口的组合
十一、白盒框架的原理与实现
白盒框架:通过代码层面的继承进行框架扩展
Example:
十二、黑盒框架的原理与实现
黑盒框架:通过实现特定接口/delegation进行框架扩展
Example:
二者区别: