本文共 1930 字,大约阅读时间需要 6 分钟。
桥接模式(Bridge Pattern)将抽象部分与它的实现部分分离,使它们都可以独立地变化。这种设计模式通过抽象和实现之间的聚合关系,避免了强耦合的继承关系。它不仅能够满足抽象部分的变化需求,还能在不影响现有功能的情况下扩展新的实现方式。
在电子商城中,用户需要根据不同的分类方式(品牌、场景)进行商品筛选。传统的继承方式会在类结构中建立紧密的依赖关系,且难以应对类别的动态变化。例如,当品牌或场景不断扩展时,现有的类结构会变得难以维护。
这些情况表明,继承关系的复用性较差,难以满足灵活性和扩展性的需求。因此,我们需要寻找一种可以在运行时灵活切换的分类方式,这就是桥接模式的应用场景。
Scene
,提供通用的分类逻辑。SportScene
和CasualScene
,各自实现不同的分类逻辑。Brand
和其实现类(如AdidasClothes
、NikeClothes
)。每个品牌通过聚合引入所需的场景类型。// Abstraction(抽象)层public abstract class Scene { public abstract void sort();}// Implementation(实现)层public class SportScene extends Scene { @Override public void sort() { System.out.println("按照运动服分类"); }}public class CasualScene extends Scene { @Override public void sort() { System.out.println("按照休闲服分类"); }}// Abstraction(抽象)层public abstract class Brand { protected Scene scene; public void setScene(Scene scene) { this.scene = scene; } public abstract void sort();}// Implementation(实现)层public class AdidasClothes extends Brand { @Override public void sort() { scene.sort(); }}public class NikeClothes extends Brand { @Override public void sort() { scene.sort(); }}// 使用示例public class Client { public static void main(String[] args) { Brand adidas = new AdidasClothes(); adidas.setScene(new SportScene()); adidas.sort(); adidas.setScene(new CasualScene()); adidas.sort(); Brand nike = new NikeClothes(); nike.setScene(new SportScene()); nike.sort(); nike.setScene(new CasualScene()); nike.sort(); }}
桥接模式通过抽象和实现的分离,以及聚合关系的使用,有效解决了多种分类需求的耦合问题。在需要灵活扩展系统功能时,建议采用桥接模式设计,以提高系统的可维护性和扩展性。
转载地址:http://slfqz.baihongyu.com/