1.如果可以动态地将一个构件移走,并以另一个构件取而代之,那么这种构件就是可插入构件。可插入构件的关键在于存在一个公用的接口,以及每个构件都实现了这个接口。接口是实现构件的可插入性的关键。没有接口,可插入性就没有保证。接口使得软件系统在灵活性和可扩展性、可插入性方面得到保证。
2.当人们讲到“接口”时,通常有两种不同的语义。第一种是指java接口,是一种Java语言中存在的结构,有特定的语法和结构;另一种仅仅是指一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者就叫做“接口”。
3.一个方法的特征仅包括方法的名字、参量的数目和种类,而不包括方法的返回类型、参量的名字以及所抛出的异常。方法重载(Overload)时,会根据这些条件判断两个方法是否是重载方法。编译器检查方法置换时(Override),则会进一步检查两个方法(分出超类型和子类型)的返还类型和抛出的异常是否相同。
4.一个类实现一个接口,这种关系叫做接口继承;一个类是另一个类的子类,这种关系叫做实现继承。Java接口没有任何实现,不涉及表象,只描述public行为,所以Java接口比Java抽象类更为抽象化。
5.Java接口的方法只能是抽象的和公开的;Java接口没有构造方法;Java接口可以有public、静态的和final的属性。
6.一些看上去毫不相干的类,可以因为提供相似的服务,从而具有相同的接口。
7.接口把方法的特征和方法的实现分割开来。这种分割,体现在接口常常代表一个角色,它包装与该角色相关的操作和属性,而实现这个接口的类便是扮演这个角色的演员。一个角色可以由不同的演员来演,而不同的演员之间除了扮演一个共同的角色之外,并不要求有任何其他的共同之处。
8.一个对象需要完成一项任务,所以需要知道其他的对象,并且调用其他对象的方法。这个对象对其他对象的知识叫做关联(Association)
9.如果一个关联不是针对一个具体类的,而是针对一个接口的,那么任何实现这个接口的类就都可以满足要求。这样一来,就可以动态地将这个关联从一个具体类转换到另一个具体类,而这样做的唯一条件就是它们都实现了某个接口。
10.在理想的情况下,一个具体Java类应当只实现Java接口和抽象类中声明过的方法,而不应给出多余的方法。
11.如果一个类已经有一个主要的超类型,那么通过实现一个接口,这个类可以拥有另一个次要的超类型。这种次要的超类型就叫做混合类型。当一个具体类处于一个类的等级结构之中的时候,为这个具体类定义一个次要的超类型是可以保证基于这个类型的可插入性的关键。Java接口是实现混合类型的最理想的工具。
12.任何公开的接口都是对客户的承诺,承诺一旦做出,就无法撤回。
网友评论