桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。
优点:
1、抽象和实现的分离。
2、优秀的扩展能力。
3、实现细节对客户透明。
缺点:
1、桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。
接口类:
package com.example.demo.sjms.qiaojiemoshi; /** * @Author: caesar * @Date:2020年10月20日 17:10:39 * @Description: 接口类 */ public interface ClassInterface { public void println(); }
两个接口类:
package com.example.demo.sjms.qiaojiemoshi; /** * @Author: caesar * @Date:2020年10月20日 17:10:02 * @Description: classA */ public class ClassA implements ClassInterface{ @Override public void println() { System.out.println("这是ClassA的方法!!!"); } }
package com.example.demo.sjms.qiaojiemoshi; /** * @Author: caesar * @Date:2020年10月20日 18:10:11 * @Description: classB */ public class ClassB implements ClassInterface{ @Override public void println() { System.out.println("这是classB!!!"); } }
桥接抽象类:
package com.example.demo.sjms.qiaojiemoshi; /** * @Author: caesar * @Date:2020年10月20日 17:10:09 * @Description: 桥梁模式抽象类 */ public abstract class BridgeAbstract { private ClassInterface classInterface; public BridgeAbstract(ClassInterface classInterface){ this.classInterface = classInterface; } public abstract void addPrintln(); }
桥接实现类:
package com.example.demo.sjms.qiaojiemoshi; /** * @Author: caesar * @Date:2020年10月20日 17:10:42 * @Description: 桥梁类 */ public class Bridge extends BridgeAbstract{ public Bridge(ClassInterface classInterface){ super(classInterface); } @Override public void addPrintln() { super.classInterface.println(); System.out.println("这是桥梁类的实现方法!!!"); } }
测试:
package com.example.demo.sjms.qiaojiemoshi; /** * @Author: caesar * @Date:2020年10月20日 18:10:06 * @Description: 测试类 */ public class Test { public static void main(String[] args) { ClassInterface classA = new ClassA(); ClassInterface classB = new ClassB(); BridgeAbstract bridgeA = new Bridge(classA); BridgeAbstract bridgeB = new Bridge(classA); bridgeA.addPrintln(); bridgeB.addPrintln(); } }
使用场景:如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。
原文:https://www.cnblogs.com/mcjhcnblogs/p/13848037.html