【设计模式】结构型04桥接模式(Bridge Pattern)

学习地址:http://www.runoob.com/design-pattern/bridge-pattern.html

桥接模式(Bridge Pattern)


桥接模式(Bridge pattern)属于结构型模式,它提供一个桥接结构,来实现二者的解耦

这种模式使用一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响

博主餐好了几个博客,于是顺手也采取了颜色与形状的简单例子。


主要解决:个人理解,对类的多维切分,从某种角度上方便了扩展。

何时使用:实现系统可能有多个角度分类,每一种角度都可能变化。

如何解决:把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合。


代码:

1、形状以及桥梁抽象类:

package com.pat.bridge;

/**
 * 这是桥接模式中的桥梁(形状抽象类)
 * @author ZX
 *
 */
public abstract class ShapeBridge {
	Color color;
	public abstract void draw();
}



/**
 * 具体形状
 * @author ZX
 *
 */
class Circle extends ShapeBridge{
	String shape="圆形";
	
	public void draw() {
		color.paint(shape);	
	}
	
	public Circle(Color color) {
		this.color=color;
	}
}
class Squre extends ShapeBridge{
	String shape="正方形";

	public void draw() {
		color.paint(shape);	
	}
	public Squre(Color color) {
		this.color=color;
	}
} 

2、颜色类,被桥接对象

package com.pat.bridge;
/**
 * 颜色接口
 * @author ZX
 *
 */
public interface Color {
	void paint(String shape);

}
/**
 * 具体颜色
 * @author ZX
 *
 */
class Red implements Color{

    @Override
	public void paint(String shape) {
    	if(shape==null||"".equals(shape)) {
    		System.out.println("红色色块");
    	}else {
    		System.out.println("红色"+shape);
    	}
	}	
}
class Blue implements Color{

    @Override
	public void paint(String shape) {
    	if(shape==null||"".equals(shape)) {
    		System.out.println("蓝色色块");
    	}else {
    		System.out.println("蓝色"+shape);
    	}
	}	
}

3、测试类:

package com.pat.bridge;

public class Test {
	public static void main(String[] args) {
		Red red = new Red();
		Squre sq = new Squre(red);
		sq.draw();
	}
}

4、结果:

红色正方形

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值