java设计模式----桥接模式

应用场景:抽象部分与实现部分分离,使它们都可以独立的变化。

创建一个抽象类:

package bridge;

public  abstract class Abstraction {
	protected Interfacor interfacor;
	public Abstraction(Interfacor interfacor){
		this.interfacor=interfacor;
	}
	public void opration(){
		interfacor.opration();
	}

}

 创建一个接口:

package bridge;

public interface Interfacor {
	public void opration();
}

 

创建两个接口实现:

package bridge;

public class InterfacorImpl1 implements Interfacor{

	@Override
	public void opration() {
		System.out.println("实现A功能");
	}

}

 

package bridge;

public class InterfacorImpl2 implements Interfacor{

	@Override
	public void opration() {
		System.out.println("实现功能B");
	}

}

 

 创建子类实现抽象类:

package bridge;

public class RefineAbstraction extends Abstraction{

	public RefineAbstraction(Interfacor interfacor) {
		super(interfacor);
	}
	public void RefineOperation(){
		System.out.println("子类重新定义");
	}

}

 

测试:

package bridge;

public class Test {
	public static void main(String[] args) {
		Interfacor interfacor=new InterfacorImpl1();
		RefineAbstraction abstraction=new RefineAbstraction(interfacor);
		abstraction.opration();
		abstraction.RefineOperation();
	}
}

 

结果:

实现A功能
子类重新定义

 这样把抽象和实现分离,需要哪个实现就调哪个实现。

再来个应用场景:

 

这上边有两个维度,一个是抽象的消息(普通消息,加急消息,特级消息),另一个维度是具体的实现(email,手机短消息,站内短消息)

这两个维度有九种不同的可能性。现在出现问题的根本原因,就在于消息的抽象和实现是混杂在一起的,这就导致了,一个纬度的变化,会引起另一个纬度进行相应的变化,从而使得程序扩展起来非常困难。要想解决这个问题,就必须把这两个纬度分开,也就是将抽象部分和实现部分分开,让它们相互独立,这样就可以实现独立的变化,使扩展变得简单。

那么如何实现呢?

根据上面的方法。

首先也是定义抽象接口。

再定义抽象类

再实现抽象接口

再继承抽象类

 

posted @ 2015-11-30 17:24  Lost blog  阅读(220)  评论(0编辑  收藏  举报