设计模式-桥接模式

其实刚接触桥接模式的时候,认为桥接模式和策略模式非常相似。下面是他们的uml图


可以看出非常的相似,很难说出差别。那么就举个栗子,现在画画,有3种图形,圆形、长方形、三角形。分别有3种颜色,黑白灰。那么如果采用策略模式的话,那么strategy可能就会有3*3=9个类,然后在和context进行关联,主要体现在封装了算法,达到直接调用其中一个类就能够得到相应的结果。如果是采用桥接模式的话,那么就只需要6个类,3个RefinedAbstraction类,3个implmentor类,从而达到3*3=9的效果,而桥接模式更加注重的是接口分离的一种思想。并且从类图中可以发现,桥接模式更加复杂。

1.首先设置一个图形的超类

/**
 * 图形超类
 */
public abstract class Shape {

	protected Color color;//颜色的引用
	
	public void setColor(Color color) {
		this.color = color;
	}
	
	public abstract void draw();
	
	
}

2.设置一个颜色的接口

public interface Color {

	void say(String string);
}

3.图形的两个子类。

/**
 *长方形
 */
public class Rectangle extends Shape{

	@Override
	public void draw() {
		color.say("长方形");
	}

}
/**
 *圆形
 */
public class Circle extends Shape{

	@Override
	public void draw() {
		color.say("圆形");
	}

}

4.颜色的子类

public class Gray implements Color{
	@Override
	public void say(String string) {
		System.out.println("灰色"+string);
	}
}
public class Black implements Color{

	@Override
	public void say(String string) {
		System.out.println("黑色"+string);
	}
}

5.最后便是测试类。

public static void main(String[] args) {
		Shape circle=new Circle();
		Shape rectangle=new Rectangle();
		//现在选用黑笔作画
		Color black=new Black();
		rectangle.setColor(black);
		rectangle.draw();//输出:黑色长方形
		//切换笔了 想用灰色的笔
		Color gray = new Gray();
		rectangle.setColor(gray);
		rectangle.draw();//输出:灰色长方形
		//想画圆形了
		circle.setColor(black);
		circle.draw();//黑色圆形
	}
这就是桥接模式,总结一下,桥接模式注重于接口的隔离,从而达到解耦,而策略模式更加注重于结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值