Java学习笔记(10)-23种设计模式之桥接模式(Bridge)

今天总结结构型模式的第三种模式,桥接模式(Bridge模式)。

定义

将抽象与实现分离,使他们可以独立变化,它利用抽象类和接口组合的方式来替代继承关系,从而降低了抽象和实现这两个可变维度的耦合度。

结构

  • 抽象化角色 : 定义一个抽象类,并包含一个实现化对象的引用。
  • 扩展抽象化角色 : 是抽象化角色的字类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。
  • 实现化 : 定义实现化角色的接口,供拓展抽象化角色调用
  • 具体实现化 : 给出实现化接口的具体实现。

代码示例

public class MyBridgeTest {
    public static void main(String[] args){
        ConcreteImplementorA concreteImplementorA = new ConcreteImplementorA();
        Abstraction refinedAbstraction = new RefinedAbstraction(concreteImplementorA);
        refinedAbstraction.Operation();
    }
    /**
     * 实现化角色
     */
    interface Implementor{
        void OperationImpl();
    }
    /**
     * 具体实例化角色
     */
    static class ConcreteImplementorA implements Implementor{

        @Override
        public void OperationImpl() {
            System.out.println("具体实例化(ConcreteImplementorA)角色被访问");
        }
    }
    /**
     * 抽象化角色
     */
    static abstract class Abstraction{
       protected  Implementor implementor;
       protected Abstraction(Implementor implementor){
           this.implementor = implementor ;
       }
       public abstract void Operation();
    }
    /**
     * 扩展抽象化角色
     */
    static class RefinedAbstraction extends Abstraction
    {
        protected RefinedAbstraction(Implementor implementor)
        {
            super(implementor);
        }
        public void Operation()
        {
            System.out.println("扩展抽象化(Refined Abstraction)角色被访问" );
            implementor.OperationImpl();
        }
    }
}

打印结果如下

扩展抽象化(Refined Abstraction)角色被访问
具体实例化(ConcreteImplementorA)角色被访问

简单梳理一下实现原理

  • 第一步:定义一个实现化角色,它是一个接口,声明具体实现角色所需要实现的方法。
  • 第二步:定义一个具体实现的类,它负责具体实现
  • 第三步:定义一个抽象化角色,也就是一个抽象类,它包含一个具体实现类的引用和一个实现具体业务的抽象方法。
  • 第四步:定义一个扩展实现类,它继承自抽象这个抽象类,并在其实现真正业务的抽象业务里实现父类的方法,做具体的业务。

优缺点

  • 优点 : 抽象与实现相分离,我们可以根据需求进行扩展;实现的细节对客户透明
  • 缺点:由于实现的聚合关系都依赖于抽象层,因此在设计时对设计人员的技术要求比较高。
    今天的桥接模式就总结到这里,觉得对您有帮助记得点个赞~
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.初识桥接模式 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 Abstraction:抽象部分的接口。...
    王侦阅读 4,494评论 0 7
  • 一、桥接模式(Bridge Pattern) 在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又...
    dongrui100阅读 3,526评论 0 0
  • 【学习难度:★★★☆☆,使用频率:★★★☆☆】直接出处:桥接模式梳理和学习:https://github.com/...
    BruceOuyang阅读 4,562评论 0 2
  • 一、应用场景 设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色...
    QuantRuu阅读 4,138评论 0 51
  • 历史的残酷性就在于,它以或动或静的姿态展示在人们的面前,但后来的人们却无法改变什么,被侮辱和被伤害人的呐喊永远在历...
    俞文杰阅读 952评论 0 0

友情链接更多精彩内容