结构型模式之桥接模式(Bridge)

桥接模式(Bridge):将抽象的部分和它的实现部分分离,使他们都可以独立的变化。

模式的角色:Abstraction:定义抽象类的接口,维护一个指向Implementor类型对象的指针,将Client端的请求转发给它的Implementor

RefinedAbstraction:扩充有Adstraction定义的接口。
Implementor:定义实现类的接口,该接口不一定要与Abstraction一致,事实上这两个接口可以完全不一样,一般来讲,Implementor接口仅提供 基本操作,
   Abstraction则定义这些基本操作较高层次的操作。

ConcreteImplementor:实现Implementor接口并定义它的具体实现。

实例:

当代社会,房子是老百姓的头等大事,可以运用桥接模式实现房子与公寓、别墅之间的关系。
房子抽象类

public abstract class House
{
	protected HouseImp houseImp;
	public String setHouseImp(HouseImp hi)
	{	
		houseImp =hi;
		return null;
	}
	public abstract String method(String str);
} 

房子扩展类

public class ExtensionHouse extends  House
{
	public String method(String str)
	{
		String  e= str+"\n EXTENSION HOUSE";
		return houseImp.doShow(e);
	}
}

房子实现类接口

public interface HouseImp
{
	public String doShow(String strHouse);
}

公寓实现类

public class FlatImp implements HouseImp
{
	public String doShow(String strHouse)
	{
		return strHouse+"公寓";
	}
}

别墅实现类

public class VillaImp implements HouseImp
{
	public String doShow(String strHouse)
	{
		return strHouse+"别墅";
	}
}

测试类

public class TestBridge
{
	public static void main(String[] args)
	{
		HouseImp  villa = new VillaImp();
		ExtensionHouse ext1 = new ExtensionHouse();
		ext1.setHouseImp(villa);
		ext1.method("Show1");
		
		HouseImp  flat= new FlatImp();
		ExtensionHouse ext2 = new ExtensionHouse();
		ext2.setHouseImp(flat);
		ext2.method("Show2");
	}
}
优势:
使接口和实现相互独立。
是接口实现类的扩展性大大的增强。
保护部分实现内容,在扩展或者变更实现内容时,无需重新编译原客户端程序。
使用场景:
需要增强抽象角色和具体角色之间的灵活性,以避免两者之间直接关联。
实现类的变动,不影响客户端的使用。
抽象接口和具体实现通过组合,均可以在子类上进行扩展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值