美文网首页
设计模式-桥接模式

设计模式-桥接模式

作者: 灵台悠步 | 来源:发表于2024-06-12 14:53 被阅读0次
桥接模式

桥接模式(bridge)也成为桥梁模式,接口(Interface)模式,柄体(Handle And Body)模式,是将抽象部分与它的具体实现部分分离,使得它们可以独立的变化,属于结构型模式。
桥接模式主要是通过组合的方式建立两个类之间的关系,而不是继承。但又类似于多重继承方案,但是多重继承方案往往违背了的单一职责原则,其复用性比较差,桥接模式是比多重继承方案更好的替代方案。
桥接模式的核心在于解耦抽象和实现。
桥接模式主要包含四种角色

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

应用场景

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

举例:
平时工作中 我们发消息 可以通过手机发送,邮件发送,以及内部系统发送。消息级别可以是普通,加急,特急消息。

package com.jdwa.bridge;

public interface IMessage {
    void send(String message,String toUser);
}
package com.jdwa.bridge;

public class PhoneMessage implements IMessage {
    @Override
    public void send(String message, String toUser) {
        System.out.println(String.format("使用手机的方式发送消息 %s 给 %s",message,toUser));
    }
}
package com.jdwa.bridge;

public class EmailMessage implements IMessage {

    @Override
    public void send(String message, String toUser) {
        System.out.println(String.format("使用邮件的方式发送消息 %s 给 %s",message,toUser));
    }
}
package com.jdwa.bridge;

public class SystemMessage implements IMessage {
    @Override
    public void send(String message, String toUser) {
        System.out.println(String.format("使用内部系统的方式发送消息 %s 给 %s",message,toUser));
    }
}
package com.jdwa.bridge;

public abstract class AbstractMessage {
    private IMessage message;
    
    public AbstractMessage (IMessage message){
        this.message = message;
    }
    
    public void senMessage(String message,String toUser){
        this.message.send(message, toUser);
    }
}
package com.jdwa.bridge;

public class NomalMessage extends AbstractMessage{

    private IMessage message;

    public NomalMessage(IMessage message){
        super(message);
    }


    @Override
    public void senMessage(String message,String toUser){
        message = "【普通】"+message;
        super.senMessage(message, toUser);
    }


}
package com.jdwa.bridge;

public class UrgencyMessage extends AbstractMessage{
    public UrgencyMessage(IMessage message) {
        super(message);
    }

    @Override
    public void senMessage(String message,String toUser){
        message = "【加急】"+message;
        super.senMessage(message, toUser);
    }
}
package com.jdwa.bridge;

public class ExtraUrgency extends AbstractMessage {
    public ExtraUrgency(IMessage message) {
        super(message);
    }

    @Override
    public void senMessage(String message,String toUser){
        message = "【加急】"+message;
        super.senMessage(message, toUser);
    }
}
package com.jdwa.bridge;

public class Client {
    public static void main(String[] args) {
        IMessage message = new EmailMessage();
        AbstractMessage abstractMessage = new NomalMessage(message);
        abstractMessage.senMessage("加班申请","王总");

        IMessage message1 = new SystemMessage();
        AbstractMessage abstractMessage1 = new UrgencyMessage(message1);
        abstractMessage1.senMessage("请假","张总");

        IMessage message2 = new PhoneMessage();
        AbstractMessage abstractMessage2 = new ExtraUrgency(message2);
        abstractMessage2.senMessage("调休","陈总");

    }
}
使用邮件的方式发送消息 【普通】加班申请 给 王总
使用内部系统的方式发送消息 【加急】请假 给 张总
使用手机的方式发送消息 【加急】调休 给 陈总

相关文章

  • 设计模式-桥接模式

    设计模式-桥接模式 定义 桥接模式(Bridge Pattern)也称为桥梁模式、接口(Interface)模式或...

  • 桥接模式

    设计模式:桥接模式(Bridge)

  • 设计模式——桥接模式

    设计模式——桥接模式 最近公司组件分享设计模式,然而分配给我的是桥接模式。就在这里记录我对桥接模式的理解吧。 定义...

  • 设计模式之桥接模式

    设计模式之桥接模式 1. 模式定义 桥接模式又称柄体模式或接口模式,它是一种结构性模式。桥接模式将抽象部分与实现部...

  • 桥接模式

    介绍 桥接模式(Bridge Pattern) 也称为桥梁模式,是结构型设计模式之一。桥接模式的作用就是连接 "两...

  • Java设计模式——桥接模式

    Java设计模式之桥接模式 回顾 上一期分享了适配器模式,主要为了实现解耦 桥接模式 简介 桥接模式是对象的结构模...

  • 设计模式-桥接模式

    桥接模式介绍 桥接模式(Bridge Pattern)也称为桥梁模式,是结构型设计模式之一。顾名思义其与现实中的桥...

  • Android设计模式——桥接模式(七大结构型)

    1.桥接模式介绍 桥接模式(Bridge Pattern)也称为桥梁模式,是七大结构型设计模式之一。 2....

  • 2、桥接模式(结构型)

    第一次接触桥接模式是在刷面试题时,遇到问jdbc主要用到的设计模式是?桥接模式。 桥接模式(Bridge):将抽象...

  • Java设计模式<桥接模式>

    Java设计模式<桥接模式> 意图 桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将...

网友评论

      本文标题:设计模式-桥接模式

      本文链接:https://www.haomeiwen.com/subject/krspeltx.html