桥接模式:
桥接模式是用于把抽象化与实现化解耦,使得二者可以独立变化。
//实现消息发送的统一接口
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("加班申请速批", "陈总");
}
}