桥接模式
1.桥接模式概念:将抽象部分与它的实现分离,使它们可以独立变化。通俗点讲实现系统可能有多种角度分类每一种分类都有可能化,那么将多角度分离出来让它们独立变化,减少它们之间的耦合。
2.桥接模式的结构图
桥接模式的角色:
-
Implementor,实现类接口。
-
ConcreteImplementor,具体实现类。
-
Abstraction,抽象类。
-
RefinedAbstraction,扩充抽象类。
从图可以看出桥接模式拥有一个抽象类,以及具体抽象类(多种),以及实现类的接口以及具体实现,实现类接口聚合到抽象类。比喻一下我们可以把抽象类比作手机品牌类,具体手机类有(华为,小米...),实现接口比作手机软件接口,具体实现由(游戏,电话联系人,音乐..等各个不同软件),手机软件可以算手机的一个可变的模块我们把它单独分离出来它自己变化然后聚合到手机上。这就是桥接模式的做法。。。
3.实例实现
(1)手机品牌类
abstract class MobileBrand {//抽象手机类
protected MobileSoft mobileSoft;
public void setMobileSoft(MobileSoft mobileSoft) {//设置软件
this.mobileSoft = mobileSoft;
}
public abstract void run();//执行方法
}
(2)具体手机类
public class HaweiMobile extends MobileBrand {
@Override
public void run() {
mobileSoft.run();
}
}
public class XiaomiMobile extends MobileBrand {
@Override
public void run() {
mobileSoft.run();
}
}
(3)手机软件接口
public interface MobileSoft {
public void run();
}
(4)具体软件实现
public class CallSoft implements MobileSoft{
@Override
public void run() {
System.out.print("运行通讯软件");
}
}
public class GameSoft implements MobileSoft{
@Override
public void run() {
System.out.print("运行手机游戏");
}
}
(5)调用
public class Test {
public static void main(String[] args){
MobileBrand huawei=new HaweiMobile();
huawei.setMobileSoft(new GameSoft());
huawei.run();
MobileBrand xiaomi=new XiaomiMobile();
xiaomi.setMobileSoft(new CallSoft());
xiaomi.run();
}
}
通过实例我们应该能发现桥接模式的原理以及用法。