您的位置:首页 > 编程语言 > Java开发

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

2015-11-30 17:24 513 查看
应用场景:抽象部分与实现部分分离,使它们都可以独立的变化。

创建一个抽象类:

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,手机短消息,站内短消息)

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

那么如何实现呢?

根据上面的方法。

首先也是定义抽象接口。

再定义抽象类

再实现抽象接口

再继承抽象类
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: