桥接模式

桥接模式:
桥接模式是用于把抽象化与实现化解耦,使得二者可以独立变化。


//实现消息发送的统一接口
public interface MessageImplementor {
    //要发送的消息的内容和接收人
    void send(String message, String toUser);
}

}
/**
 * 系统内短消息的实现类
 * SMS(Short Message Service)短信息服务
 */
public class MessageSMS implements MessageImplementor {
    @Override
    public void send(String message, String toUser) {
        System.out.println(String.format("使用系统内部短消息的方法,发送消息 %s 给 %s", message, toUser));
    }
}
/**
 * 邮件短消息的实现类
 */
public class MessageEmail implements MessageImplementor {
    @Override
    public void send(String message, String toUser) {
        System.out.println(String.format("使用邮件短消息的方法,发送消息 %s 给 %s", message, toUser));
    }
}
/**
 * 抽象消息类
 */
public abstract class AbstractMessage {
    //持有一个实现部分的对象
    MessageImplementor implementor;

    //构造方法,传入实现部分的对象
    public AbstractMessage(MessageImplementor implementor) {
        this.implementor = implementor;
    }

    //发送消息,委派给实现部分的方法
    public void sendMessage(String message, String toUser) {
        this.implementor.send(message, toUser);
    }
}

/**
 * 普通消息类
 */
public class CommonMessage extends AbstractMessage {

    //构造方法,传入实现部分的对象
    public CommonMessage(MessageImplementor implementor) {
        super(implementor);
    }

    @Override
    public void sendMessage(String message, String toUser) {
        //对于普通消息,直接调用父类方法,发送消息即可
        super.sendMessage(message, toUser);
    }
}

/**
 * 加急消息类
 */
public class UrgencyMessage extends AbstractMessage {

    //构造方法
    public UrgencyMessage(MessageImplementor implementor) {
        super(implementor);
    }

    @Override
    public void sendMessage(String message, String toUser) {
        message = "加急:" + message;
        super.sendMessage(message, toUser);
    }

    //扩展它自己的功能,监控某个消息的处理状态
    public Object watch(String messageId) {
        //根据给出的 消息编码(messageId) 查询消息的处理状态,
        // 组织成监控的处理状态,然后返回。
        return null;
    }
}

/**
 * 测试类
 */
public class TestBridge {
    public static void main(String[] args) {
        MessageImplementor implementor = new MessageSMS();
        AbstractMessage abstractMessage = new CommonMessage(implementor);
        abstractMessage.sendMessage("加班申请速批", "陈总");

        implementor = new MessageEmail();
        abstractMessage = new UrgencyMessage(implementor);
        abstractMessage.sendMessage("加班申请速批", "陈总");
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值