Design Pattern_Bridge(桥模式)
来源:互联网 发布:软件设计师宁波分数线 编辑:程序博客网 时间:2024/05/21 21:48
Bridge模式意图:将一组实现部分从另一组使用它们的对象中分离出来。问题:一个抽象类的派生类必须使用多种实现部分,但又并不能引起数量的爆炸。解决方案:为所有的实现部分定义一个接口,让抽象类的所有派生类使用这个接口。参与者与协作者:Abstraction为正在实现的对象定义接口。Implementor为特定的实现部分类定义接口。Abstraction的派生类使用Implementor的派生类,而不必知道自己使用的特定ConcreteImplementor。效果:“实现部分与使用它的对象的分离”增加了灵活性。客户对象不需要了解实现问题。实现: 1.将实现部分封装在一个抽象类。 2.在被实现的抽象类部分基类中包含一个实现部分基类的句柄注意:在Java中,你可以在实现部分使用接口来代替抽象类。
桥模式其实就是将多对多关系的通过桥联系起来,而这个桥就是用两个abstract连接,再分别实现子类的过程
注意,这里一直使用的implement interface实现,其实用abstract就可以了,只是implement暴露的更少
这里举的例子是,交通工具与发动机类型的一种多对多关系,汽车飞机都可以用汽油机或者电机,这里使用的就是桥模式
通过两个抽象的Vehicle 和 Engine链接
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package bridge;/** * * @author blacklaw */public class Bridge { /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here new Car(0).Go(); new Car(1).Go(); new Plane(0).Go(); new Plane(1).Go(); }}/** * 交通工具的一种,汽车 * @author blacklaw */class Car extends Vehicle{ public Car(int engineID) { super.init(engineID); } public void Go(){ System.out.print("I'm a car "); super.Go(); }}/** * 交通工具的一种,飞机 * @author blacklaw */class Plane extends Vehicle{ public Plane(int engineID) { super.init(engineID); } public void Go(){ System.out.print("I'm a plane "); super.Go(); }}/** * 交通工具,抽象类 * @author blacklaw */abstract class Vehicle{ //用abstract和interface的效果一样,只是interface暴露的更少 private EngineInterface engine; //private Engine engine2; public void init(int engineID){ switch(engineID){ case 0:engine = new petrolEngine();break; case 1:engine = new electroEngine();break; } } public void Go(){ engine.Go(); }}/** * 发动机接口 * @author blacklaw */interface EngineInterface{ public void Go();}/** * 发动机抽象类 * @author blacklaw */abstract class Engine implements EngineInterface{ @Override public void Go() { } }/** * 汽油发动机 * @author blacklaw */class petrolEngine extends Engine{ @Override public void Go() { System.out.println("with petrolEngine go"); } }/** * 电动发动机 * @author blacklaw */class electroEngine extends Engine{ @Override public void Go() { System.out.println("with electroEngine go"); }}
- Design Pattern_Bridge(桥模式)
- Design Pattern:桥接模式
- Design Pattern Bridge 桥设计模式
- 设计模式 Design Parttern ——桥模式Bridge
- 设计模式之----桥接模式(Brige Design Pattern)
- 代理模式Proxy Design
- Design pattern设计模式
- Design Pattern, 设计模式
- Design Pattern: Mediator 模式
- Design Pattern: Singleton 模式
- 设计模式-Design Patterns
- Design Pattern_Facade(外观模式)
- Design Pattern_Strategy(策略模式)
- Design Pattern_Observer(观察者模式)
- Design Pattern_Prototype(原型模式)
- Design Pattern_Memento(备忘录模式)
- Design Pattern_State(状态机模式)
- Design Pattern_Visitor(访问者模式)
- 创建svn下的项目
- VC资源视图中显示在另一个编辑器中打开时解决办法
- Java语言中的两种异常
- 算法真谛
- 2013, VI Samara Regional Intercollegiate Programming Contest
- Design Pattern_Bridge(桥模式)
- JDK Aarrays 类中的二分查找方法
- JetBrains ReSharper 7.1.3000.2254 破解版
- Tomcat6 配置多虚拟主机,多域名绑定一IP
- QT自定义窗口插件在QT Creator的应用
- ZOJ 3305 Get Sauce(DFS+剪枝)
- define
- Heritrix eclipse安装、配置
- 蓝桥杯(机器人)