桥梁模式
- 桥梁模式定义
- 使用场景
- 1、电视机顶盒:
- 2、蓝牙耳机:
- 3、智能家居:
- 4、电商平台:
- 5、总结:
- 角色定义
- Abstraction-抽象化角色:
- Implementor实现化角色:
- RefinedAbstraction:
- Concretelmplementor:
- 需求背景
- 1、首先,定义抽象化角色(Abstraction):
- 2、接下来,定义实现化角色(lmplementor):
- 3、修正抽象化角色(RefinedAbstraction):
- 4、代码实现如下:
- 4.1 抽象化角色:平台
- 4.2 实现化角色:交流方式
- 4.3 具体实现化角色:买家
- 4.4 具体实现化角色:卖家
- 4.5 具体实现化角色:卖家
- 4.6 修正抽象化角色:具体的交流方式
- 4.7 测试案例
- 4.8 测试结果如下
- 4.9 总结
- 4.10 解耦体现
- 4.10.1 在桥梁模式中,平台和交流方式都是抽象化的部分,它们被定义为独立的抽象类。具体实现则由各自的具体类来完成。
- 4.10.2 在这种设计中,平台和交流方式的具体实现是彼此独立的,它们可以自由组合,不会相互影响。因此,如果需要添加新的平台或交流方式,只需要新增对应的具体类即可,不需要修改原有的代码。
- 4.10.3 这样,平台和交流方式的解耦就得以实现。即使平台或交流方式发生变化,也不会影响到系统的其他部分,从而提高了系统的灵活性和可维护性。
桥梁模式定义
将抽象和实现解耦,使得两者可以独立地变化
使用场景
1、电视机顶盒:
电视机顶盒将电视机和网络进行解耦,使得它们可以独立变化,实现了电视节目的网络化传输。
2、蓝牙耳机:
蓝牙耳机将手机和耳机进行解耦,使得它们可以独立变化,实现了无线通信的便利。
3、智能家居:
智能家居将家庭设备和智能控制系统进行解耦,使得它们可以独立变化,实现了家居智能化的目标。
4、电商平台:
电商平台将买家和卖家进行解耦,使得它们可以独立变化,实现了线上交易的便利。
5、总结:
总之,桥梁模式在生活中有很广泛的应用,可以将不同的对象进行解耦,使它们可以独立变化,从而提高系统的灵活性和可扩展性。
角色定义
Abstraction-抽象化角色:
它的主要职责是定义出该角色的行为,同时保存一个对实现化角色的引用,该角色般是抽象类
Implementor实现化角色:
它是接口或者抽象类,定义角色必需的行为和属性
RefinedAbstraction:
一修正抽象化角色: 它引用实现化角色对抽象化角色进行修正
Concretelmplementor:
一具体实现化角色: 它实现接口或抽象类定义的方法和属性
需求背景
使用桥梁模式实现电商平台将买家和卖家进行解耦
1、首先,定义抽象化角色(Abstraction):
平台,提供了一些方法,用于处理买家和卖家之间的交流。具体实现化角色(Concretelmplementor):买家和卖家,实现了平台提供的方法。
2、接下来,定义实现化角色(lmplementor):
交流方式,包括文字、语音、视频等多种方式。
3、修正抽象化角色(RefinedAbstraction):
具体的交流方式,比如文字交流、语音交流、视频交流等。
4、代码实现如下:
4.1 抽象化角色:平台
// 抽象化角色:平台
abstract class Platform {
protected Implementor implementor;
public void setImplementor(Implementor implementor) {
this.implementor = implementor;
}
public void communicate() {
implementor.communicate();
}
}
4.2 实现化角色:交流方式
// 实现化角色:交流方式
interface Implementor {
void communicate();
}
4.3 具体实现化角色:买家
4.4 具体实现化角色:卖家
// 具体实现化角色:买家
class Buyer implements Implementor {
public void communicate() {
System.out.println("使用文字交流");
}
}
4.5 具体实现化角色:卖家
// 具体实现化角色:卖家
class Seller implements Implementor {
public void communicate() {
System.out.println("使用语音交流");
}
}
4.6 修正抽象化角色:具体的交流方式
// 修正抽象化角色:具体的交流方式
class TextCommunication extends Platform {
public void communicate() {
System.out.println("买家和卖家使用文字交流");
implementor.communicate();
}
}
class VoiceCommunication extends Platform {
public void communicate() {
System.out.println("买家和卖家使用语音交流");
implementor.communicate();
}
}
4.7 测试案例
public class BridgeTest {
public static void main(String[] args) {
Platform platform = new TextCommunication();
platform.setImplementor(new Buyer());
platform.communicate();
platform = new VoiceCommunication();
platform.setImplementor(new Seller());
platform.communicate();
}
}
4.8 测试结果如下
买家和卖家使用文字交流
使用文字交流
买家和卖家使用语音交流
使用语音交流
4.9 总结
桥梁模式是一种将抽象部分与具体实现部分分离的设计模式。它通过将实现部分抽象出来,使得它们可以独立地变化,从而达到解耦的目的。在使用桥梁模式时,需要合理使用Abstraction、lmplementor、RefinedAbstraction和Concretelmplementor等角色,以达到最佳的效果。