桥接模式:将类的功能实现与类的层次关系分离
类的功能层次:如果需要新增功能,通常会继承原有的类,新写一个类,并添加新功能的实现,从而形成了类的功能层次关系。
类的实现层次:如果要给类添加新的实现,比如说给水果类添加新的类,苹果,需要继承原来的水果类,新写一个苹果类,这样就形成了类之间的实现层次关系。
例如显示器类,类的实现层次上,有各种各样的品牌显示器,类的功能实现上,显示器可以打开,关闭,调节等
//定义显示器类
class Monitor{
//持有功能层次接口的引用
MonitorFun impl;
//构造函数中,引用具体的功能层次接口
Monitor(MonitorFun impl){
this.impl=impl
}
void open(){
impl.open();
}
void close(){
impl.close();
}
}
//定义显示器 功能层次的接口
interface MonitorFun {
//定义方法,与Monitor中的open方法对应
void open();
//定义方法,与Monitor中的close方法对应
void close();
}
//显示器功能的具体实现
class ConcreteFun implements MonitorFun{
public void open(){}
public void close(){}
}
//三星显示器,显示器的层次实现
class SamsungMonitor extends Monitor{
}
将功能层次单独写一个类,并让原有类持有该引用,就可以分离功能与实现。