1.定义
桥接模式(Bridge)将抽象部分与它的实现部分分离,从而保持各部分的独立性以及应对它们的功能扩展。
2.结构
2.1 UML类图
2.2 角色
- Abstraction 抽象类或接口维护对行为实现的引用
- Refined Abstraction:抽象化角色的子类,实现父类中的业务方法,并通过组合/聚合关系调用实现角色中的业务方法。
- Implementor:定义实现化角色的接口,定义实现化角色的行为和属性
- Concrete Implementor:Implementor实现类
3.实现
interface Application {
void installApp();
}
class Apk implements Application {
@Override
public void installApp() {
System.out.println("安装安卓软件");
}
}
class Ipa implements Application {
@Override
public void installApp() {
System.out.println("安装苹果软件");
}
}
abstract class Phone {
Application application;
public Phone(Application application) {
this.application = application;
}
public abstract void installApp();
}
class Android extends Phone {
public Android(Application application) {
super(application);
}
@Override
public void installApp() {
System.out.print("安卓手机");
application.installApp();
}
}
class Iphone extends Phone {
public Iphone(Application application) {
super(application);
}
@Override
public void installApp() {
System.out.print("苹果手机");
application.installApp();
}
}
public class BridgeDemo {
public static void main(String[] args) {
Phone android = new Android(new Apk());
android.installApp();
Phone iphone = new Iphone(new Ipa());
iphone.installApp();
}
}
4.优缺点
4.1 优点
- 抽象与实现分离,可以独立扩展,增加可扩展。
- 实现细节对客户透明,可对用户隐藏实现细节。
4.2 缺点
- 由于聚合关联关系建立在抽象层,会让系统变得复杂。
本人才疏学浅,若有错,请指出,谢谢!
如果你有更好的建议,可以留言我们一起讨论,共同进步!
衷心的感谢您能耐心的读完本篇博文!