现在的位置: 首页 > 综合 > 正文

设计模式(10)-桥接模式(Bridge)

2013年07月08日 ⁄ 综合 ⁄ 共 1505字 ⁄ 字号 评论关闭

当实现一个操作,有抽象和实现的叠加时,用桥模式可以比较好的解决。
比如飞机分为:客机,货机,空中客车,波音
客机,货机就是一种抽象,airbus, bocing就是一种实现,两者之间有叠加,有一种排列组合的关系。如果不用设计模式进行结构的设计,代码可能就会很混乱。下面给出一个演示的例子。

抽象接口Plane

package org.bluebea.gof.bridge;

public abstract class Plane {

    protected PlaneMaker planeMaker;

    public Plane() {
        this.planeMaker = PlaneMakerSingle.getPlaneMaker();
    }

    public abstract void fly();

}

说明:抽象接口中有一个实现接口对象的实现,以保证两个接口发生关系。
可以在构造抽象接口实现时,放入实现对象。但以后的子类在构造时都会有这种操作。

实现接口PlaneMaker

package org.bluebea.gof.bridge;

public abstract class PlaneMaker {

    public abstract void make();

}

抽象实现PassengerPlane

package org.bluebea.gof.bridge;

public class PassengerPlane extends Plane {

    public PassengerPlane() {
    }
    public void fly() {
        planeMaker.make();
        System.out.println("-- " + "PassengerPlane fly.");
    }

}

抽象实现CargoPlane

package org.bluebea.gof.bridge;

public class CargoPlane extends Plane {

    public CargoPlane() {
    }

    public void fly() {
        planeMaker.make();
        System.out.println("-- " + "CargoPlane fly.");
    }

}

实现接口实现Bocing

package org.bluebea.gof.bridge;

public class Bocing extends PlaneMaker {

    public Bocing() {
    }

    public void make() {
        System.out.print("-- " + "Bocing");
    }

}

实现接口实现Airbus

package org.bluebea.gof.bridge;

public class Airbus extends PlaneMaker {

    public Airbus() {
    }

    public void make() {
        System.out.print("-- " + "Airbus");
    }

}

取得实现对象的单态类 

package org.bluebea.gof.bridge;

public class PlaneMakerSingle {

    private static PlaneMaker planeMaker;

    public PlaneMakerSingle(PlaneMaker pm) {
        planeMaker = pm;
    }

    public static PlaneMaker getPlaneMaker() {
        return planeMaker;
    }
}

 

抱歉!评论已关闭.