桥梁模式 , 结构型模式一种 .设计程序过程中 , 会经常使用到抽象类或者接口来完成抽象的过程 ,将抽象部分与它的实现部分分离,使它们都可以独立地变化。 .
用聚合代替继承。
组成说明:
桥梁模式主要由抽象类、修正抽象类、实现类以及具体实现类组成 .
抽象类 , 制定接口 , 同时给出一个实现化的引用 .
修正抽象类 , 扩展抽象类 , 修正或改变抽象类中指定的接口 .
实现类 , 提供实现化角色的接口 , 但不进行具体实现过程 , 该接口不一定给出与抽象类相同的接口 , 只是提供实现的方式 .
具体实现类 , 完成实现类中定义的实现接口的具体实现过程 .
优点 : 隔离抽象和实现 , 使双方能够各自完成扩展 .
缺点:会增加系统的理解与设计难度。
案例:
组装:
//接口
public interface Brand {
void open();
void close();
void call();
}
public abstract class Phone {
//组合品牌
private Brand brand;
//构造器
public Phone(Brand brand) {
super();
this.brand = brand;
}
protected void open() {
this.brand.open();
}
protected void close() {
brand.close();
}
protected void call() {
brand.call();
}
}
抽象类实现类:
public class FoldedPhone extends Phone {
//构造器
public FoldedPhone(Brand brand) {
super(brand);
}
public void open() {
super.open();
System.out.println(" 折叠样式手机 ");
}
public void close() {
super.close();
System.out.println(" 折叠样式手机 ");
}
public void call() {
super.call();
System.out.println(" 折叠样式手机 ");
}
}
接口实现:
public class XiaoMi implements Brand {
@Override
public void open() {
// TODO Auto-generated method stub
System.out.println(" 小米手机开机 ");
}
@Override
public void close() {
// TODO Auto-generated method stub
System.out.println(" 小米手机关机 ");
}
@Override
public void call() {
// TODO Auto-generated method stub
System.out.println(" 小米手机打电话 ");
}
}
测试:
public class Client {
public static void main(String[] args) {
//获取折叠式手机 (样式 + 品牌 )
Phone phone1 = new FoldedPhone(new XiaoMi());
phone1.open();
phone1.call();
phone1.close();
}
}