失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 设计模式之桥接模式详解

设计模式之桥接模式详解

时间:2019-03-27 14:52:34

相关推荐

设计模式之桥接模式详解

设计模式之桥接模式详解

文章目录

设计模式之桥接模式详解一、什么是桥接模式二、桥接模式的应用场景三、桥接模式的角色组成四、桥接模式通用写法示例五、桥接模式优缺点

一、什么是桥接模式

桥接模式(Bridge Pattern)也称为桥梁模式、接口模式或者柄体模式,是将抽象部分与它的具体实现部分分离,使它们都可以独立地变化,属于结构型模式。桥接模式主要目的是通过组合的方式建立两个类之间的联系,而不是继承。但又类似于多重继承方案,但是多重继承方案往往违背了类的单一职责原则,其复用性较差,桥接模式是比多重继承更好的替代方案。桥接模式的核心在于解耦抽象和实现。

二、桥接模式的应用场景

当一个类内部具备两种或多种变化维度时,使用桥接模式可以解耦这些变化的维度,使高层代码架构稳定。桥接模式适用于以下几种业务场景:

在抽象和具体实现之间需要增加更多的灵活性的场景一个类存在两个或多个独立变化的维度,而这两个或多个维度都需要独立进行扩展不希望使用继承,或因为多层继承导致系统类的个数剧增

桥接模式的一个常用场景就是为了替换继承。我们知道继承有很多优点,比如抽象,封装,多态等,父类封装共性,子类实现特性。继承可以很好地帮助我们实现代码复用(封装)的功能,但是同时,这也是继承的一大缺点。因为父类拥有的方法,子类也会继承得到,无论子类是否需要。这说明了继承具备强侵入性(父类代码侵入子类),同时会导致子类臃肿。因此,在设计模式中,有一个原则为,优先使用组合/聚合的方式,而不是继承。

三、桥接模式的角色组成

抽象(Abstraction):该类持有一个对实现角色的引用,抽象角色中的方法需要实现角色来实现,抽象角色一般为抽象类(构造函数规定子类要传入一个实现对象);修正抽象(RefinedAbstraction):Abstraction的具体实现,对Abstraction的方法进行完善和扩展;实现(Implementor):确定实现维度的基本操作,提供给Abstraction使用。该类一般为接口或者抽象类;具体实现(ConcreteImplementor):Implementor的具体实现;

四、桥接模式通用写法示例

创建抽象Abstraction:

/*** 抽象 Abstraction */public abstract class Abstraction {protected IImplementor mImplementor;public Abstraction(IImplementor implementor) {this.mImplementor = implementor;}public void operation() {this.mImplementor.operationImpl();}}

创建修正抽象角色RefinedAbstraction:

/*** 修正抽象 RefinedAbstraction*/public class RefinedAbstraction extends Abstraction {public RefinedAbstraction(IImplementor implementor) {super(implementor);}@Overridepublic void operation() {super.operation();System.out.println("refined operation");}}

创建实现角色Implementor:

public interface IImplementor {void operationImpl();}

创建具体实现角色ConcreteImplementorA:

public class ConcreteImplementorA implements IImplementor {public void operationImpl() {System.out.println("I'm ConcreteImplementor A");}}

编写测试类

public class Test {public static void main(String[] args) {// 实现角色AIImplementor imp = new ConcreteImplementorA();// 抽象角色,聚合实现Abstraction abs = new RefinedAbstraction(imp);// 执行操作abs.operation();}}

代码测试,控制台输出:

五、桥接模式优缺点

优点 分离抽象部分及具体实现部分提高了系统的扩展性符合开闭原则、合成复用原则 缺点 增加了系统的理解与设计难度需要正确地识别系统中两个独立变化的维度

如果觉得《设计模式之桥接模式详解》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。