概述
1. [桥接模式] 是 [对象的适配器模式] 的衍生模式
2.桥接模式简单介绍
桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。
3.桥接模式简单Demo
我们到面馆吃面,面的种类有很多 如:牛肉面、鸡肉面;可以添加的辅料也很多如:辣椒、醋等;我们以此为例;
3.1 先定义一个接口 (面馆提供:辅料、调料)
/**
* 调料
*/
public interface C1_1_Seasoning {
//添加调料
String addSeasoning();
}
3.2 具体两个实现(面馆只进了两种调料:加辣、加醋)
/**
* 添加辣椒
*/
public class C2_1_AddChili implements C1_1_Seasoning {
@Override
public String addSeasoning() {
return "[加辣椒]";
}
}
/**
* 添加陈醋
*/
public class C2_2_AddVinegar implements C1_1_Seasoning {
@Override
public String addSeasoning() {
return "[加陈醋]";
}
}
3.3 定义一个桥持有接口实例 (吃面 - 添加的调料具体吃的时候才知道)
/**
* 吃面
*/
public abstract class C3_1_Noodles {
public C1_1_Seasoning seasoning;
public void setSeasoning(C1_1_Seasoning seasoning) {
this.seasoning = seasoning;
}
public abstract void getNoodles();
}
3.4 定义具体的实现(面馆只能做2种面:定义2种面条-先有了菜单才能上菜)
public class C4_1_EatBeefNoodles extends C3_1_Noodles{
@Override
public void getNoodles() {
System.out.println("点份[牛肉面] "+seasoning.addSeasoning());
}
}
public class C4_2_EatChickenNoodles extends C3_1_Noodles{
@Override
public void getNoodles() {
System.out.println("点份[鸡肉面] "+seasoning.addSeasoning());
}
}
3.5 客户端调用(客户要点餐 吃饭了)
public class C5_Client {
public static void main(String[] args) {
C3_1_Noodles noodles = new C4_1_EatBeefNoodles();// 吃面-牛肉面
noodles.setSeasoning(new C2_1_AddChili());// 加辣椒
noodles.getNoodles();
noodles = new C4_2_EatChickenNoodles();//吃面-鸡肉面
noodles.setSeasoning(new C2_2_AddVinegar());// 加陈醋
noodles.getNoodles();
}
}
3.6 控制台输出
点份[牛肉面] [加辣椒]
点份[鸡肉面] [加陈醋]
4.为什么使用桥接模式不使用继承呢?
继承是一种强耦合关系,子类与父类有非常紧密的依赖关系,父类的任何变化 都会导致子类发生变化。因此才使用桥接模式,使用了桥接模式之后,我们的两个维度就像桥梁一样被链接了起来。体现了松耦合的特性。
5.桥梁模式的优点
● 分离抽象和实现部分 (将面条、调料 都抽象出来 与实现分开)
桥梁模式分离了抽象部分和实现部分,从而极大地提供了系统的灵活性。让抽象部分和实现部分独立出来,分别定义接口,这有助于对系统进行分层,从而产生更好的结构化的系统。
● 更好的扩展性
桥梁模式使得抽象部分和实现部分可以分别独立地扩展,而不会相互影响,从而大大提高了系统的可扩展性。
最后
以上就是英俊滑板为你收集整理的设计模式-06-适配器模式-[桥接模式]的全部内容,希望文章能够帮你解决设计模式-06-适配器模式-[桥接模式]所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复