定义
- 基于类的最小设计原则,将抽象部分与它的实现部分分离,使它们都可以独立的变化。
- 继承关系多了,不易于维护父类,而笔者认为桥接模式的出现很好的解决了这个问题。用聚合解决继承的父类难维护性
- 桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化”。
- 基于类的最小设计选择,通过封装,聚合以及继承等行为让不同的类,承担不同职责
应用场景
-
对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥
接模式尤为适用. -
常见的应用场景: -JDBC驱动程序
-银行转账系统 -转账分类: 网上转账,柜台转账,AMT转账 -转账用户类型:普通用户,银卡用户,金卡用户.. -消息管理 -消息类型:即时消息,延时消息 -消息分类:手机短信,邮件消息,QQ消息
代码
public class test4 {
public static void main(String[] args) {
Brand vivo = new UpRightPhone(new vivo());
vivo.open();
vivo.clones();
vivo.call();
System.out.println("======================================");
Brand xiaomi = new UpRightPhone(new xiaomi());
xiaomi.open();
xiaomi.clones();
xiaomi.call();
}
}
interface IOperate {
void open();
void clones();
void call();
}
//品牌父类
class Brand {
private IOperate operate;//聚合
public Brand(IOperate operate) {
super();
this.operate = operate;
}
public void open() {
operate.open();
}
public void clones() {
operate.clones();
}
public void call() {
operate.call();
}
public IOperate getOperate() {
return operate;
}
public void setOperate(IOperate operate) {
this.operate = operate;
}
}
//小米手机
class UpRightPhone extends Brand {
public UpRightPhone(IOperate operate) {
super(operate);
}
@Override
public void open() {
super.open();
System.out.println(" 直立样式手机 ");
}
@Override
public void clones() {
super.clones();
System.out.println(" 直立样式手机 ");
}
@Override
public void call() {
super.call();
System.out.println(" 直立样式手机 ");
}
}
//vivo 手机
class vivo implements IOperate {
@Override
public void open() {
System.out.println(" Vivo手机开机 ");
}
@Override
public void clones() {
System.out.println(" Vivo手机开机 ");
}
@Override
public void call() {
System.out.println(" Vivo手机打电话 ");
}
}
//小米 手机
class xiaomi implements IOperate {
@Override
public void open() {
System.out.println(" 小米手机开机 ");
}
@Override
public void clones() {
System.out.println(" 小米手机开机 ");
}
@Override
public void call() {
System.out.println(" 小米手机打电话 ");
}
}**