桥接模式

桥接模式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(); } }
浙公网安备 33010602011771号