【设计模式】——桥接模式

来源:互联网 发布:农村淘宝官网首页 编辑:程序博客网 时间:2024/05/17 21:48

桥接模式:将抽象部分与他的实现部分分离,使它们可以独立的变化。


 

Abstraction定义抽象类的接口,维护一个指向Implementor类型对象的指针。

Implementor定义实现类的接口,不需要与Abstraction接口完全一致,但是事实上这两个接口可以完全相同。一般来说,Implementor接口提供基本操作,而Abstraction定义了基于这些基本操作的较高层次的操作。

适用场合:1.类的抽象以及他的视线都可以通过生成子类的方法加以扩充。使得开发者可以对不同的抽象接口和实现部分进行组合,并分别对他们加以扩充。2、对一个抽象的实现部分的修改应该对客户不产生影响,即客户端代码不必重新编译。

代码实现:




 

 

代码填写的知识。

javauml图中关于依赖关系和关联关系的区分不是非常的明显,图中虽然使用的是关联的箭头,但是实际上是依赖的关系,而依赖的关系体现在代码上就是作为关联类的参数或者作为返回值。

接口知识:

一个类实现接口的时候,除了方法体以外,参数和方法名都要与接口完全一致,一般无返回值。java接口的方法只能是抽象的和公开的。接口中的方法默认都是 public,abstract 类型的。

 

抽象类:

 抽象类不能直接实例化,也就是说不能直接new出来。抽象类中必须要有抽象方法,对于抽象方法只有声明没有方法体,一般情况下是没有参数的。

 

接口和抽象类的总结。

接口是引用类型的,和抽象类的相似之处有三点:

1、不能实例化;

2、包含未实现的方法声明;

3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)。

抽象类与接口紧密相关。然而接口又比抽象类更抽象,这主要体现在它们的差别上:

1、类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。

2、抽象类当中可以存在非抽象的方法,可接口不能,且它里面的方法只是一个声明必须用public来修饰没有具体实现的方法。

3、抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(staticfinal)。

4、抽象类是对象的抽象,然而接口是一种行为规范。

 

虚方法vitual和抽象方法abstract的区别:

1、虚方法和抽象方法都是为了多态而诞生的

2、虚方法利用关键词virtual表示,抽象方法利用abstract表示

3、虚方法有实现的主题,可以有实现,也可以没有实现,而抽象方法仅仅只有一个声明,在子类中必须进行override即实现

4、虚方法在调用的时候可以使用父类的方法实现主题,而抽象方法则必须在子类中进行override

5、虚方法可以存在于普通的类中,而抽象方法只能存在于抽象类之中,及abstract类中

0 0