文章目录
package com.example.demo.designpattern;
public class Bridge {
public static void main(String[] args) {
RefinedAbstraction refinedAbstraction = new RefinedAbstraction(new ConcreteImplementor());
refinedAbstraction.action();
RefinedAbstraction refinedAbstraction_A = new RefinedAbstraction(new ConcreteImplementorA());
refinedAbstraction_A.action();
}
}
interface Implementor {
abstract public void doWork();
abstract public void doSleep();
}
class ConcreteImplementor implements Implementor {
@Override
public void doWork() {
System.out.println("work");
}
@Override
public void doSleep() {
System.out.println("sleep");
}
}
class ConcreteImplementorA implements Implementor {
@Override
public void doWork() {
System.out.println("A-work");
}
@Override
public void doSleep() {
System.out.println("A-sleep");
}
}
abstract class Abstraction {
public Implementor getImplementor() {
return implementor;
}
private Implementor implementor;
public Abstraction(Implementor implementor) {
this.implementor = implementor;
}
public void action() {
this.implementor.doWork();
}
}
class RefinedAbstraction extends Abstraction {
public RefinedAbstraction(Implementor implementor) {
super(implementor);
}
@Override
public void action() {
super.action();
this.getImplementor().doSleep();
}
}