设计模式——桥接模式(Bridge模式)

2022-11-04,,,

基本介绍

    桥接模式Bridge模式):将实现与抽象放在两个不同的类层次中,使两层次可以独立改变
    是一种结构型设计模式
    说白了就是有多个维度的变化,这样的组合关系如果按照传统的方式会导致类爆炸,所以需要将两个维度抽象出来,然后让其通过对象进行组合,来减少类的创建

用手机来举例

当前有两个维度:1. 品牌; 2. 样式
品牌:小米 华为 Vivo等
手机样式:直板机、滑盖机、翻盖机等

先定义品牌维度接口

public interface Brand {
// 品牌口号
String brandVoice();
}
定义一个品牌小米
public class Xiaomi implements Brand {
@Override
public String brandVoice() {
return "为发烧而生...";
}
}

在定义样式接口

public interface PhoneStyle {
// 手机样式
String style();
}
定义电话类
public abstract class Phone {
//组合品牌
private Brand mBrand; //构造器
public Phone(Brand mBrand) {
this.mBrand = mBrand;
} protected void open(){
this.mBrand.brandVoice();
System.out.println("phone open");
} protected void close(){
this.mBrand.brandVoice();
System.out.println("phone close");
} protected void call(){
this.mBrand.brandVoice();
System.out.println("phone call");
} }

定义具体的Phone类

//折叠式手机类,继承抽象类Phone
public class FoldedPhone extends Phone implements PhoneStyle {
//构造器
public FoldedPhone(Brand mBrand) {
super(mBrand);
} public void open(){
super.open();
style();
} public void close(){
super.close();
style();
} public void call(){
super.call();
style();
} @Override
public String style() {
return "折叠式手机";
}
}
使用
public class Client {
public static void main(String[] args){
//获取折叠式手机(样式+品牌)
Phone phone1 = new FoldedPhone(new Xiaomi());
phone1.open();
phone1.call();
phone1.close();
}
}
这就使桥接模式,从类图上可以看出,一个抽象类带一个接口飞的样子,其实还可以继续抽象,不过再抽象就接近装饰者模式了

设计模式——桥接模式(Bridge模式)的相关教程结束。

《设计模式——桥接模式(Bridge模式).doc》

下载本文的Word格式文档,以方便收藏与打印。