设计模式之桥接模式

简介:桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化,从而实现二者的解耦。。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。
我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法。其中,可以使用相同的抽象类方法但是不同的桥接实现类,来画出不同颜色的圆。
优点: 1、抽象和实现的分离。 2、优秀的扩展能力。 3、实现细节对客户透明。
缺点:桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。
概要设计:我们有一个作为桥接实现的 DrawAPI 接口和实现了 DrawAPI 接口的实体类 RedCircle、GreenCircle。Shape 是一个抽象类,将使用 DrawAPI 的对象。BridgePatternDemo,我们的演示类使用 Shape 类来画出不同颜色的圆。
在这里插入图片描述
代码
步骤 1
创建桥接实现接口。

public interface DrawAPI {
	void drawCircle(int radius,int x,int y);
}

步骤 2
创建实现了 DrawAPI 接口的实体桥接实现类。

public class RedCircle implements DrawAPI {

	@Override
	public void drawCircle(int radius, int x, int y) {
		System.out.println("Drawing Circle[ color: red, radius: "
		         + radius +", x: " +x+", "+ y +"]");
	}

}
public class GreenCircle implements DrawAPI {

	@Override
	public void drawCircle(int radius, int x, int y) {
		System.out.println("Drawing Circle[ color: green, radius: "
		         + radius +", x: " +x+", "+ y +"]");
	}

}

步骤 3
使用 DrawAPI 接口创建抽象类 Shape。

public abstract class Shape {
	protected DrawAPI drawAPI;

	protected Shape(DrawAPI drawAPI) {
		this.drawAPI = drawAPI;
	}

	public abstract void draw();
}

步骤 4
创建实现了 Shape 接口的实体类。

public class Circle extends Shape {
	private int x, y, radius;
	protected Circle(int x, int y, int radius,DrawAPI drawAPI) {
		 super(drawAPI);
	     this.x = x;  
	     this.y = y;  
	     this.radius = radius;
	}

	@Override
	public void draw() {
		drawAPI.drawCircle(radius,x,y);
	}

}

步骤 5
使用 Shape 和 DrawAPI 类画出不同颜色的圆。

public class BridgePatternDemo {

	public static void main(String[] args) {
		  Shape redCircle = new Circle(100,100, 10, new RedCircle());
	      Shape greenCircle = new Circle(100,100, 10, new GreenCircle());
	      redCircle.draw();
	      greenCircle.draw();
	}
}

结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值