桥接模式

 

桥接模式Bridge Pattern

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。

这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。

public interface IComputer {

    void open();
    void close();
    void writeJava();
}
public class Lenovo1 implements IComputer{

    @Override
    public void open() {
        System.out.println("一代开机");
    }

    @Override
    public void close() {
        System.out.println("一代关机");

    }

    @Override
    public void writeJava() {
        System.out.println("一代写代码");

    }
}
public class HuaWei1 implements IComputer{

    @Override
    public void open() {
        System.out.println("一代开机");
    }

    @Override
    public void close() {
        System.out.println("一代关机");

    }

    @Override
    public void writeJava() {
        System.out.println("一代写代码");

    }
}
public abstract class ChangeComputer {
    private IComputer computer;

    public ChangeComputer(IComputer computer) {
        this.computer = computer;
    }

    void open(){
        computer.open();
    }
    void close(){
        computer.close();
    }
    void writeJava(){
        computer.writeJava();
    }
}
public class Lenovo2 extends ChangeComputer {


    public Lenovo2(IComputer computer) {
        super(computer);
    }

    @Override
    void open() {
        super.open();
        System.out.println("升级二代开机");
    }

    @Override
    void close() {
        super.close();
        System.out.println("升级二代关机");

    }

    @Override
    void writeJava() {
        super.writeJava();
        System.out.println("升级二代写代码");

    }
}
public class HuaWei2 extends ChangeComputer {

    public HuaWei2(IComputer computer) {
        super(computer);
    }

    @Override
    void open() {
        super.open();
        System.out.println("华为二代开机");
    }

    @Override
    void close() {
        super.close();
        System.out.println("华为二代关机");

    }

    @Override
    void writeJava() {
        super.writeJava();
        System.out.println("华为二代写代码");

    }
}
public class TMain {
    public static void main(String[] args) {

        IComputer computer =new Lenovo1();

        ChangeComputer computer1 =new Lenovo2(computer);
        System.out.println("==================开机=============");
        computer1.open();
        System.out.println("==================关机=============");

        computer1.close();
        System.out.println("==================写代码=============");

        computer1.writeJava();

        System.out.println("=======================================");
        IComputer computer3 =new HuaWei1();
        ChangeComputer computer2 =new HuaWei2(computer3);
        computer2.open();
        computer2.close();
        computer2.writeJava();
   }
}

 

posted on 2021-12-09 10:41  无心睡眠A8  阅读(21)  评论(0)    收藏  举报