设计模式:十七.桥接模式

桥接模式(Bridge Mode):属于结构模式的一种。看过我上篇策略模式时会发现它们在代码层面非常相似,UML图长的一模一样,它们写法完全一模一样。我们完全可以将它放在一起记忆。记一下区别就好了。桥接模式属于结构型模式,策略模式属于行为型模式,从分类上看侧重点不同,前者强调结构,后者强调行为。前者强调抽象与实现的分离,后者强调算法可替代。桥接模式是调用端和被调用端都可以变化,策略模式是只有被调用端变化。桥接模式应用了接口隔离原则,抽象与实现分离,原因它们都会变化,所以用聚合来替代继承。

桥接模式 策略模式
结构型模式,强调结构 行为型模式,强调行为
强调抽象和实现的分离 强调算法可替代
使用聚合替代继承,避免类爆炸,扩展不灵活 一个类里面 某个方法的实现 会有多种变化 但运行时不确定用哪种实现,避免使用if else,将方法提升到类的层次。

目录

1. 意图:

主要解决:在有很多种可能会变化的情况下,用继承会造成类爆炸的问题,扩展起来不灵活。

定义:将抽象部分与实现部分分离,使它们都可以独立的变化。

2. 如何使用:

如何解决:把这种多角度类分离出来,让它们可以独立变化,减少它们之间的耦合

优点:1.抽象和实现分离。2.优秀的扩展能力。3.实现细节对客户透明。

缺点:桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开放者针对抽象进行设计与编程。

使用场景:1.一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。2.对于不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。
3.如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。

注意事项:对于两个独立变化的维度,使用桥接模式再合适不过了。

3. UML模板:

image

4. 关键代码:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会根据您的要求为您展示一个结构型设计模式的实例,我选择的是代理模式。 首先,在Eclipse中新建一个Java项目,命名为ProxyPatternDemo。 接下来,创建一个接口:Subject.java ```java public interface Subject { public void request(); } ``` 然后,创建一个真实主题类:RealSubject.java ```java public class RealSubject implements Subject { @Override public void request() { System.out.println("RealSubject: Handling request."); } } ``` 接着,创建一个代理类:Proxy.java ```java public class Proxy implements Subject { private RealSubject realSubject; @Override public void request() { if (realSubject == null) { realSubject = new RealSubject(); } preRequest(); realSubject.request(); postRequest(); } private void preRequest() { System.out.println("Proxy: Preprocessing request."); } private void postRequest() { System.out.println("Proxy: Postprocessing request."); } } ``` 最后,编写测试案例:ProxyPatternDemo.java ```java public class ProxyPatternDemo { public static void main(String[] args) { Proxy proxy = new Proxy(); proxy.request(); } } ``` 运行测试案例,可以看到以下输出: ``` Proxy: Preprocessing request. RealSubject: Handling request. Proxy: Postprocessing request. ``` 代理模式的实现就完成了。通过代理类,我们可以实现对真实主题类的访问控制,同时也可以在真实主题类的方法执行前后添加一些额外的处理逻辑。 希望这个例子对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值