适配器模式与桥接模式(2)

简介: 适配器模式与桥接模式(2)

二、桥接模式


image.png


抽象化(Abstraction)角色:定义抽象类,并包含一个对实现化对象的引用。

扩展抽象化(Refined Abstraction)角色:是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。


实现化(Implementor)角色:定义实现化角色的接口,供扩展抽象化角色调用。

具体实现化(Concrete Implementor)角色:给出实现化角色接口的具体实现。


桥接模式示例


下面我们以发消息为例来进行说明,首先消息类型是一个维度,比如可以发邮件,发短信。然后消息可以有紧急消息,普通消息,这又是一个具体的维度。


1、首先新建一个消息接口类:


package com.zwx.design.pattern.bridge;
public interface IMessage {
    void send(String content,String toUser);
}


2、新建两个实现类,分别是邮件消息和短信消息:


package com.zwx.design.pattern.bridge;
public class EmailMessage implements IMessage {
    @Override
    public void send(String content, String toUser) {
        System.out.println(String.format("邮件消息->%s:%s",toUser,content));
    }
}


package com.zwx.design.pattern.bridge;
public class SmsMessage implements IMessage {
    @Override
    public void send(String content, String toUser) {
        System.out.println(String.format("SMS消息->%s:%s",toUser,content));
    }
}


假如这时候我们需要按照普通消息和紧急消息来做一些不同的事情,那么这时候普通写法会怎么写,我想可能会是如下写法,直接改写消息类,在分别去实现紧急消息类和普通消息类:


public class SmsMessage extends CommonMsg implements IMessage {


但是Java是单继承,所以一次只能继承一个,要么就把普通消息和紧急消息设置为接口,要么就作为组合的形式,将紧急消息和普通消息分别作为属性存到对应的消息类型里面去。但是不论是哪种形式,都需要修改原先的SmsMessage 类。


所以这时候就需要使用桥接模式,将抽象(消息类型)与实现(消息紧急程度)进行分离。


3、新建一个抽象类,将IMessage集成进去:


package com.zwx.design.pattern.bridge;
public abstract class AbstractMessage {
    private IMessage iMessage;
    public AbstractMessage(IMessage iMessage) {
        this.iMessage = iMessage;
    }
    public void sendMessage(String content,String toUser){
        this.iMessage.send(content,toUser);
    }
}



目录
相关文章
|
设计模式
结构型设计模式06-桥接模式
结构型设计模式06-桥接模式
37 0
|
2月前
|
设计模式 缓存 C#
适配器模式与桥接模式:一分钟浅谈
【10月更文挑战第14天】本文介绍了面向对象设计中的适配器模式和桥接模式,包括它们的概念、应用场景、实现方式及常见问题。适配器模式通过接口转换解决不兼容问题,适用于系统扩展和遗留系统升级;桥接模式通过分离抽象和实现提高灵活性,适用于多维度变化和避免类爆炸。文中还提供了C#代码示例以加深理解。
46 3
|
6月前
结构型模式之桥接模式
结构型模式之桥接模式
结构型模式之桥接模式
|
7月前
|
设计模式 Java 关系型数据库
聊聊Java设计模式-桥接模式
桥接(Bridge)模式是指将抽象部分与实现部分相分离,使它们都可以独立的发生变化。
90 7
聊聊Java设计模式-桥接模式
|
设计模式
设计模式-结构型模式:桥接模式
设计模式-结构型模式:桥接模式
|
7月前
|
API 数据库
结构型 桥接模式
结构型 桥接模式
47 0
|
设计模式 开发者
设计模式~桥接模式(bridge)-14
(1)优点: (2)缺点: (3)使用场景: (4)注意事项: (5)应用实例: 代码 桥接(Bridge)是
57 0
|
设计模式
设计模式之桥接模式(未使用桥接模式、使用桥接模式、源码体现)
设计模式之桥接模式(未使用桥接模式、使用桥接模式、源码体现)
57 0
|
Linux Windows
结构型模式-桥接模式
结构型模式-桥接模式
116 0
|
设计模式 安全 Java
设计模式 - 结构型模式_桥接模式
桥接模式的主要作⽤就是通过将抽象部分与实现部分分离,把多种可匹配的使⽤进⾏组合。说⽩了核⼼实现也就是在A类中含有B类接⼝,通过构造函数传递B类的实现,这个B类就是设计的 桥
94 0
设计模式 - 结构型模式_桥接模式