桥接模式
@author lisiwen
@createTime 2019/12/31
**桥接模式(Bridge):**将抽象部分与它的实现部分分离,使它们都可以独立的变化。
抽象与它的实现分离:这并不是说,让抽象与其派生类分离,因为这没有任何意义。实现指的是抽象类和它的派生类用来实现自己的对象。
桥接模式的代码实现
Implementor.java
/**
* @ProjectName: designpattern
* @ClassName: Implementor
* @Description: Implementor接口
* @Author: lisiwen
* @Date: 2019/12/31 8:54
**/
interface Implementor {
void Operation();
}
ConcreteImplementorA.java
/**
* @ProjectName: designpattern
* @ClassName: ConcreteImplementorA
* @Description: ConcreteImplementorA类
* @Author: lisiwen
* @Date: 2019/12/31 8:55
**/
public class ConcreteImplementorA implements Implementor {
@Override
public void Operation() {
System.out.println("具体实现A的方法的执行");
}
}
ConcreteImplementorB.java
/**
* @ProjectName: designpattern
* @ClassName: ConcreteImplementorA
* @Description: ConcreteImplementorA类
* @Author: lisiwen
* @Date: 2019/12/31 8:55
**/
public class ConcreteImplementorB implements Implementor {
@Override
public void Operation() {
System.out.println("具体实现B的方法的执行");
}
}
Abstraction.java
/**
* @ProjectName: designpattern
* @ClassName: Abstraction
* @Description: Abstraction类
* @Author: lisiwen
* @Date: 2019/12/31 9:00
**/
public class Abstraction {
protected Implementor implementor;
public void setImplementor(Implementor implementor) {
this.implementor = implementor;
}
public void operation() {
implementor.Operation();
}
}
RefinedAbstraction.java
/**
* @ProjectName: designpattern
* @ClassName: RefinedAbstraction
* @Description: RefinedAbstraction类
* @Author: lisiwen
* @Date: 2019/12/31 9:01
**/
public class RefinedAbstraction extends Abstraction {
@Override
public void operation() {
this.implementor.Operation();
}
}
Main.java
/**
* @ProjectName: designpattern
* @ClassName: Main
* @Description: 客户端实现
* @Author: lisiwen
* @Date: 2019/12/31 9:04
**/
public class Main {
public static void main(String[] args) {
Abstraction abstraction = new RefinedAbstraction();
abstraction.setImplementor(new ConcreteImplementorA());
abstraction.operation();
abstraction.setImplementor(new ConcreteImplementorB());
abstraction.operation();
}
}
实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这汇总多角度分离出来让他们独立变化,减少他们之间的耦合。