Java设计模式-----Bridge桥接模式

本文介绍了设计模式中的桥接模式,并通过具体的代码实例演示了如何将抽象与其实现解耦,以便两者可以独立变化。示例中定义了抽象的绘图接口及具体的实现类,展示了不同版本的绘制方式可以通过桥接模式灵活组合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

源自:http://www.blogjava.net/flustar/archive/2007/11/28/bridge.html

Bridge桥接模式:

将抽象与其实现解耦,使它们都可以独立地变化。大致意思是说:将一组实现与另一组使用他们的对象分离。这里的实现指的是抽象类及其派生类用来实现自己的对象(而不是抽象类的派生类,这些派生类被称为具体类)。

例子:

public abstract class Drawing {

	public abstract void drawLine();

	public abstract void drawCircle();
}

public class DP1 {

	public static void draw_a_line(){

        System.out.println("使用DP1的draw_a_line()画线");
    }

    public static void draw_a_circle(){

        System.out.println("使用DP1的draw_a_circle()画圆");
    }
}

public class DP2 {

	public static void drawLine() {

		System.out.println("使用DP2的drawLine()画线");
	}

	public static void drawCircle() {

		System.out.println("使用DP2的drawCircle()画圆");
	}
}

public class V1Drawing extends Drawing {

	public void drawCircle() {
		DP1.draw_a_circle();
	}

	public void drawLine() {
		DP1.draw_a_line();
	}
}

public class V2Drawing extends Drawing {

	public void drawLine(){

        DP2.drawLine();
    }

    public void drawCircle(){

        DP2.drawCircle();
    }
}

public abstract class Shape {

	protected Drawing myDrawing;

	abstract public void draw();

	Shape(Drawing drawing) {

		myDrawing = drawing;
	}

	protected void drawLine() {

		myDrawing.drawLine();
	}

	protected void drawCircle() {

		myDrawing.drawCircle();
	}
}

public class Rectangle extends Shape {

	Rectangle(Drawing drawing) {
		super(drawing);
	}

	public void draw() {
		
		drawLine();
        drawLine();
        drawLine();
        drawLine();
	}
}

public class Circle extends Shape {

	Circle(Drawing drawing) {
		super(drawing);
	}

	public void draw() {
		myDrawing.drawCircle();
	}
}

public class BridgeClient {

	public static void main(String[] args) {
		
		Drawing draw1 = new V1Drawing();
        Drawing draw2 = new V2Drawing();

        Shape shape1 = new Rectangle(draw1);
        shape1.draw();

        Shape shape2 = new Circle(draw2);
        shape2.draw();
	}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值