首页 / 设计模式 / 设计模式--桥接模式
设计模式--桥接模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了设计模式--桥接模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1530字,纯文字阅读大概需要3分钟。
内容图文
桥接模式:
桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。
在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就要使用桥接模式。
优点:
桥接模式将继承关系转化为关联关系,降低了类于类之间的耦合度,降低了类的数量。
组成:
- 抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。
- 修正抽象化(Refined Abstraction)角色:扩展抽象化角色,改变和修正父类对抽象化的定义。
- 实现化(Implementor)角色:这个角色给出实现化角色的接口,但不给出具体的实现。必须指出的是,这个接口不一定和抽象化角色的接口定义相同,实际上,这两个接口可以非常不一样。实现化角色应当只给出底层操作,而抽象化角色应当只给出基于底层操作的更高一层的操作。
- 具体实现化(Concrete Implementor)角色:这个角色给出实现化角色接口的具体实现。
类图:
例子:
手机有不同的品牌,上面有很多软件,用程序实现,用不同的手机运行各种软件,怎么实现?像这种两个维度的就可以用桥接模式来解决。
代码:
public abstract class Phone { public Software software; abstract void run(); public void setSoftware(Software software) { this.software = software; } }
public class PhoneA extends Phone { @Override void run() { System.out.print("用A手机"); software.start(); } }
public class PhoneB extends Phone { @Override void run() { System.out.print("用B手机"); software.start(); } }
public interface Software { void start(); }
public class CameraSoftware implements Software { @Override publicvoid start() { System.out.println("打开相机"); } }
public class GameSoftware implements Software { @Override publicvoid start() { System.out.println("打开游戏"); } }
public class Client { public static void main(String[] args) { Software game = new GameSoftware(); Software camera = new CameraSoftware(); Phone phone1 = new PhoneB(); phone1.setSoftware(game); phone1.run(); Phone phone2 = new PhoneA(); phone2.setSoftware(camera); phone2.run(); } }
原文:http://www.cnblogs.com/foreverYoungCoder/p/7866966.html
内容总结
以上是互联网集市为您收集整理的设计模式--桥接模式全部内容,希望文章能够帮你解决设计模式--桥接模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。